簡體   English   中英

具有圖像視圖的Autolayout,2個標簽,按鈕 - 旋轉后標簽消失

[英]Autolayout with image view, 2 labels, button - the labels disappear after rotating

在一個簡單的iPhone測試應用程序中,我試圖在圖像視圖中顯示用戶手機(使用SDWebImage通過CocoaPods),兩個標簽和一個“播放”按鈕 - 其他UI元素位於其他元素下方,如屏幕截圖所示:

應用截圖

我在Xcode 5中使用Autolayout並在每個UI元素周圍設置20px,如屏幕截圖所示(此處全屏 ):

Xcode 5截圖

我在ViewController.m中的代碼簡短而簡單:

- (void)viewDidLoad
{
    [super viewDidLoad];

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

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

不幸的是我的問題是旋轉后兩個標簽都消失了:

風景截圖

肖像截圖

為什么會這樣? 我花了很多時間試圖解決這個問題,嘗試改變各種UI元素的“內容擁抱優先級”和“內容壓縮阻力優先級”......

我已經解決了我的問題,將較低的“內容擁抱優先級”和“內容壓縮阻力優先級”提供給圖像視圖(將所有內容設置為250,此處為全屏 )和更高 - 兩個標簽和按鈕(將它們設置為750):

Xcode截圖

(同樣對於圖像視圖我已將模式更改為“Aspect Fill”並啟用“Clip Subviews”),現在它可以正常工作:

肖像截圖

風景截圖

作為一個iOS編程新手,我很抱歉,如果我的問題太簡單,但似乎解決了它(移動setImageWithURL:placeholderImage:調用viewDidAppear沒有)。 也很抱歉在這個網頁上有我的臉5次 - 該圖片在測試應用程序中有問題,所以我沒有費心去搜索中性的。

1-我認為您的問題是您使用3.5英寸屏幕的模擬器,如果您願意,可以嘗試使用4英寸屏幕或ipad模擬器。

2 - 我認為它們消失的原因是它們沒有空間,試圖讓SDWebImage更小。

3 - 如果您單擊標簽本身並轉到第一個選項卡(文件檢查器),您也可以在故事板中看到一個選項,說明使用AutoLayuot是否已經檢查過,因為它可能是問題所在。

我希望這可以幫助你。

您的約束是可以的,這似乎是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畢竟:)

暫無
暫無

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

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