带有图像视图、2 个标签、按钮的自动布局 - 标签在旋转后消失
Posted
技术标签:
【中文标题】带有图像视图、2 个标签、按钮的自动布局 - 标签在旋转后消失【英文标题】:Autolayout with image view, 2 labels, button - the labels disappear after rotating 【发布时间】:2014-04-25 19:04:14 【问题描述】:在一个简单的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 元素更改“内容拥抱优先级”和“内容压缩阻力优先级”......
【问题讨论】:
您有一些错误或缺少约束——看到故事板场景列表中圆圈中的那个红色小箭头了吗?单击该箭头以查看您遇到的错误并尝试修复它们。 谢谢,但我没有红色三角形in my app - 该屏幕截图是在创建测试应用程序的过程中拍摄的。在最终版本中,我没有红色三角形,但问题就在那里 【参考方案1】:我通过将较低的“内容拥抱优先级”和“内容压缩阻力优先级”设置为图像视图(将所有内容设置为 250,此处为 fullscreen)和更高的标签和按钮(设置他们到750):
(同样对于图像视图,我已将模式更改为“Aspect Fill”并启用“Clip Subviews”)现在可以正常工作了:
作为 ios 编程新手,如果我的问题太简单了,我很抱歉,但似乎已经解决了它(移动 setImageWithURL:placeholderImage:
调用 viewDidAppear
没有)。也很抱歉在这个网页上出现了 5 次我的脸 - 该图像在测试应用中存在问题,所以我没有费心去寻找中性的。
【讨论】:
【参考方案2】:您的约束没问题,这似乎是 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 :)
【讨论】:
谢谢 - 我已将setImageWithURL:placeholderImage:
呼叫移至 viewDidAppear
,但问题仍然存在。
啊,现在我明白了 :) 我克隆了您的项目并在情节提要中进行了这些更改:将标签和按钮的垂直压缩阻力设置为 1000,将 ImageView 设置为 750 ...这确保了第一件事收缩是图像视图而不是标签(由于压缩阻力与图像视图相同,旋转后它们的高度为 0)【参考方案3】:
1-我认为您的问题是您使用的是 3.5 英寸屏幕的模拟器,如果需要,请尝试使用 4 英寸屏幕或 ipad 模拟器。
2-我认为它们消失的原因是它们没有空间,尝试使 SDWebImage 更小。
3-如果您单击标签本身并转到第一个选项卡(文件检查器),也会在您的故事板中看到一个选项,上面写着使用 AutoLayuot 看看您是否已选中它,因为它可能是问题所在。
我希望这对你有帮助。
【讨论】:
很遗憾,我看不出您的建议有什么帮助:我希望我的应用程序可以与 3.5 英寸和 4 英寸 iPhone 一起使用,并且我正在使用问题中所述的自动布局以上是关于带有图像视图、2 个标签、按钮的自动布局 - 标签在旋转后消失的主要内容,如果未能解决你的问题,请参考以下文章