2014-04-25 60 views
4

在簡單的test app for iPhone中,我試圖在圖像視圖(使用SDocomage通過CocoaPods)中顯示用戶手機,兩個標籤和一個「播放」如屏幕截圖示出的其它下每個UI元素:Autolayout帶圖像視圖,2個標籤,按鈕 - 旋轉後標籤消失

app screenshot

我使用自動佈局在Xcode 5和圍繞每個UI元件20像素設置爲屏幕截圖所示(這裏fullscreen):

Xcode 5 screenshot

我在ViewController.m代碼很簡短:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    _firstName.text = @"Alex"; 
    _city.text  = @"Bochum"; 

    [_imageView setImageWithURL:[NSURL URLWithString:kAvatar] 
       placeholderImage:[UIImage imageNamed:@"Male.png"]]; 
} 

不幸的是我的問題是,旋轉後兩個標籤消失:

landscape screenshot

portrait screenshot

它爲什麼會發生?我花了很多時間試圖弄明白,試圖改變各種UI元素太「內容抱死優先」和「內容壓縮性優先」 ......

+0

您有一些錯誤或缺少約束 - 請參閱故事板場景列表中的圓圈中的小紅色箭頭?點擊那個箭頭查看你有哪些錯誤並嘗試修復它們。 – rdelmar

+0

謝謝,但我沒有紅色三角[在我的應用程序](https://github.com/afarber/ios-newbie/tree/master/MyPhone) - 該截圖是在創建測試應用程序的過程中採取的。在最終版本中,我沒有紅色三角形,但問題出在 –

回答

4

我已經解決了我的問題,通過在圖像視圖中提供較低的「內容擁抱優先級」和「內容壓縮阻力優先級」(將所有內容設置爲250,此處爲fullscreen)或更高 - 以兩個標籤和按鈕(它們設置爲750):

Xcode screenshot

(也可用於攝像畫面我已經改變了模式,以「縱橫填」並啓用「剪輯子視圖」),現在它正常工作:

portrait screenshot

landscape screenshot

作爲一個iOS的編程新手,我很抱歉,如果我的問題已經太簡單了,但什麼似乎已經解決了它(移動setImageWithURL:placeholderImage:調用viewDidAppear沒有)。也很抱歉在這個網頁上我的臉5次 - 該圖像在測試應用程序中有問題,所以我沒有打擾到尋找一箇中立的。

0

1 - 我認爲你的問題是,你的使用帶3.5英寸屏幕的模擬器,如果需要,可嘗試使用4英寸屏幕或iPad模擬器。

2的,我認爲它們消失的原因是,有沒有地方,儘量讓SDWebImage較小。

3 - 在故事板中,如果您單擊標籤本身並轉到第一個選項卡(文件檢查器),您可以看到一個選項,指出使用AutoLayuot查看您是否具有該選項,因爲它可能是問題。

我希望這可以幫助你。

+0

。不幸的是,我看不出您的建議如何提供幫助:我希望我的應用能夠同時使用3.5英寸和4英寸iPhone,並且我使用的是Autolayout在我的問題 –

0

你的約束是好,這似乎是在SDWebImage的錯誤。當您想要下載圖片時,佔位符顯示正確(標籤可見)。但是,一旦圖像被下載,一些奇怪的事情發生,而你的圖像替換佔位符,你的佈局變壞。如果你打電話

[_imageView setImageWithURL:[NSURL URLWithString:kAvatar]; 

代替

[_imageView setImageWithURL:[NSURL URLWithString:kAvatar] 
      placeholderImage:[UIImage imageNamed:@"Male.png"]]; 

它做什麼它應該。

更新: 你需要調用

[_imageView setImageWithURL:[NSURL URLWithString:kAvatar] 
      placeholderImage:[UIImage imageNamed:@"Male.png"]]; 

內viewDidAppear的限制生效。所以這可能不是SDWebImageBug :)

+0

謝謝 - 我已將'setImageWithURL:placeholderImage:'調用移至'viewDidAppear',但問題仍然存在。 –

+1

啊,現在我明白了:)我克隆了你的項目,並在故事板中做出了這些改變:將標籤和按鈕的垂直抗壓力設置爲1000,將ImageView設置爲750 ...這確保首先縮小的是圖像視圖,而不是標籤(由於壓縮阻力與圖像視圖相同,旋轉後其高度爲0) – libec