2015-09-12 92 views
0

我已經使用AutoLayout設置了UIImageView。我已經爲頂部,底部,頂部和尾部設置了限制(我希望根據手機的大小改變寬度和高度)。在我的屬性檢查器中,它還顯示圖像視圖的寬度和高度。出於某種原因,當第一次加載視圖時,頂部空間到頂部佈局約束被忽略,圖像離開屏幕,並且IB的高度被使用(332)。添加照片後,視圖會按預期調整大小。我NSLogged圖像視圖的幀高度,它正在改變。我不明白,我認爲圖像視圖的FRAME總是一樣的。我沒有收到任何自動佈局錯誤,一切都是藍色的。 enter image description hereUIImageView使用AutoLayout更改幀大小

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,並沒有提到基於圖像大小改變幀的內容。這很重要,因爲我正在根據幀大小調整圖像大小。

+0

你必須給圖像視圖的寬度和高度約束,並將圖像視圖放置在uiview中,並給出前導和tralig以及頂部和底部的uiview約束 –

回答

0

當你不限制寬度和高度時,我知道imageView可以用AutoLayout搞笑。許多圖像比imageView大得多,因此您可以看到imageView增長到一個巨大的尺寸(可能是因爲它無法計算其內在內容的大小)。我之前通過限制imageView的寬度和高度解決了這個問題,但顯然你希望你的設備大小是動態的。

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

3

如果您使用的是AutoLayout。

第1步:選擇UIImageView,點擊右下方的引腳。

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

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

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

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