簡體   English   中英

UIImageView使用AutoLayout更改框架大小

[英]UIImageView Frame size changing using AutoLayout

我已經使用AutoLayout設置了UIImageView。 我已經設置了頂部,底部,前導和尾隨的約束(我希望寬度和高度根據手機的大小而變化)。 在我的屬性檢查器中,它還顯示圖像視圖的寬度和高度。 由於某些原因,在第一次加載視圖時,將忽略“頂部空間到頂部布局”約束,並且圖像離開屏幕,並使用IB中的高度(332)。 添加照片后,視圖將按預期調整大小。 我NSLogged圖像視圖的框架高度,並且它正在更改。 我不明白,我認為圖像視圖的幀始終相同。 我沒有收到任何“自動布局”錯誤,所有內容均為藍色。 在此處輸入圖片說明

UIImage *imageToView = [existingImage resizedImageWithBounds:self.selectPhoto.frame.size];//Resize the image for better performance
 self.selectPhoto.contentMode =UIViewContentModeScaleAspectFit;
 NSLog(@"Select Photo Frame Size Height is %f", self.selectPhoto.frame.size.height); //The first time this screen loads, this height is 332.  Every other time (after the user enters a new photo, the height is 310 which is what I want.
self.selectPhoto.image = imageToView;

回顧:為什么我的self.selectPhoto(這是屏幕快照中顯示的大圖像視圖).frame發生了變化? 我仔細檢查了Apple Docs,它沒有說根據圖像大小更改框架。 這很重要,因為我正在根據幀大小調整圖像大小。

如果您使用的是自動版式。

第1步:選擇UIImageView,單擊右下角的圖釘。

步驟2:添加高度和寬度約束。

步驟3:選擇約束並將其拖到.h文件中。

步驟4:使用以下代碼在.m文件中設置所需的高度和寬度。

_heightConstraint.constant = 100;
_widthConstraint.constant = 100;

我知道當您不限制寬度和高度時,imageViews可以與AutoLayout一起使用。 許多圖像都比imageView大得多,因此您可以看到imageView增長到很大的尺寸(可能是因為無法計算其固有內容尺寸)。 我已經通過限制imageView的寬度和高度來解決了這個問題,但是顯然您希望您的設備隨設備大小動態變化。

我建議在項目中使用一個您想要的大小的單獨UIView並將UIImageView嵌入其中。 為兩者設置正確的約束,這應該可以解決您的問題。

暫無
暫無

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

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