簡體   English   中英

UIImageView旋轉並調整大小

[英]UIImageView rotate and resize

我想旋轉我的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的contentMode屬性從UIViewContentModeCenter更改為UIViewContentModeScaleAspectFit,它將很好用,但大小小於我的預期。 這是為什么? :(我該如何解決?如果您有任何幫助!

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM