在一个简单的test app for iPhone中,我试图在图像视图中显示用户手机(通过CocoaPods使用SDWebImage),两个标签和一个“播放”按钮 - 其他UI元素位于其他元素下方,如屏幕截图所示:
我在Xcode 5中使用Autolayout并在每个UI元素周围设置20px,如屏幕截图所示(此处为fullscreen):
ViewController.m中的代码简短明了:
- (void)viewDidLoad
{
[super viewDidLoad];
_firstName.text = @"Alex";
_city.text = @"Bochum";
[_imageView setImageWithURL:[NSURL URLWithString:kAvatar]
placeholderImage:[UIImage imageNamed:@"Male.png"]];
}
不幸的是我的问题是旋转后两个标签都消失了:
为什么会这样?我花了很多时间试图解决这个问题,尝试改变各种UI元素的“内容拥抱优先级”和“内容压缩阻力优先级”......
答案 0 :(得分:4)
通过降低内容拥抱优先级"我解决了我的问题。和"内容压缩阻力优先"到图像视图(将所有内容设置为250,此处为fullscreen)和更高 - 指向两个标签和按钮(将它们设置为750):
(同样对于图像视图,我已将模式更改为" Aspect Fill"并启用"剪辑子视图")现在它可以正常工作:
作为iOS编程新手,我很抱歉,如果我的问题过于简单,但似乎解决了这个问题(移动setImageWithURL:placeholderImage:
调用viewDidAppear
没有)。也很抱歉在这个网页上有我的脸5次 - 该图片在测试应用程序中有问题,所以我没有费心去搜索中性的。
答案 1 :(得分:0)
1-我认为您的问题是您使用的是3.5英寸屏幕的模拟器,如果您愿意,可以尝试使用4英寸屏幕或ipad模拟器。
2 - 我认为它们消失的原因是它们没有空间,试图让SDWebImage更小。
3 - 如果您单击标签本身并转到第一个选项卡(文件检查器),您也可以看到一个选项,说明使用AutoLayuot,看看您是否已选中,因为它可能是问题所在。
我希望这会对你有所帮助。
答案 2 :(得分: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毕竟:)