2010-02-01 97 views
0

我想我的旋轉和UIImageView的根據長寬比設置的大小。 但我有一些問題。首先我在這裏粘貼我的代碼,然後解釋問題。的UIImageView旋轉和調整

imageView.size = CGSizeMake(myWidth, myHeight); 
[imageView setContentMode:UIViewContentModeCenter]; 

因此,這兩行設置我的imageView的大小和contentMode。 當我這樣做時,圖像顯示正確。所以當設備旋轉時,我收到旋轉通知,並且

if ([self isLandscape]) { 
    CGFloat aspect = myHeight/myWidth; 
    imageView.size = CGSizeMake(myWidth/aspect, myWidth); 
    [self rotateView:imageView withDegree:degree]; 
    imageView.origin = CGPointMake(x, y); 
} else { 
    [self rotateView:imageView withDegree:degree]; 
    imageView.origin = CGPointMake(x, y); 
    imageView.size = CGSizeMake(myWidth, myHeight); 
} 

然後旋轉完成。但是你可以看到我也在調整大小。
問題是我的imageView的最小尺寸不能被覆蓋。 但我想通了,如果我改變我的ImageView從UIViewContentModeCenter到UIViewContentModeScaleAspectFit隨後的contentMode屬性,將工作不錯,但規模比我預期要小。這是爲什麼? :(我該如何解決這個問題?請,如果您有任何幫助!所以,這是所有可見光和不發生任何剪裁。如果你想你的內容來填充視圖,並可能有一些

回答

1

ScaleAspectFit只會擴大內容剪裁,你應該使用UIViewContentModeScaleAspectFill代替。

但是,如果你想要做的是執行的最小尺寸爲每個維度,您可以使用MAX宏來代替。

CGSize mySize = CGSizeMake(myWidth, myHeight); 
mySize.x = MAX(mySize.x, myXMin); 
mySize.y = MAX(mySize.y, myYMin); 
imageView.size = mySize; 

而且,只是檢查你真正的意思景觀大小爲(width*width/height, width)並不僅僅是(height, width)