![](/img/trans.png)
[英]Asynchronous loading of image in UICollectionViewCell causes labels to disappear
[英]Autolayout with image view, 2 labels, button - the labels disappear after rotating
在一個簡單的iPhone測試應用程序中,我試圖在圖像視圖中顯示用戶手機(使用SDWebImage通過CocoaPods),兩個標簽和一個“播放”按鈕 - 其他UI元素位於其他元素下方,如屏幕截圖所示:
我在Xcode 5中使用Autolayout並在每個UI元素周圍設置20px,如屏幕截圖所示(此處全屏 ):
我在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):
(同樣對於圖像視圖我已將模式更改為“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.