带有图像视图、2 个标签、按钮的自动布局 - 标签在旋转后消失

     2023-03-13     259

关键词:

【中文标题】带有图像视图、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 一起使用,并且我正在使用问题中所述的自动布局

无法使用自动布局和堆栈视图完整显示标签

】无法使用自动布局和堆栈视图完整显示标签【英文标题】:can\'tdisplaythelabelinfullusingAutolayoutandstackviews【发布时间】:2017-01-2722:08:10【问题描述】:我有一个包含3个按钮和3个标签的堆栈视图。标签的宽度等于按钮的宽度,因此... 查看详情

使用带有自动布局的推送时隐藏按钮时,约束更新导致项目移动

】使用带有自动布局的推送时隐藏按钮时,约束更新导致项目移动【英文标题】:constraintupdatecauseitemmovewhenusinghidebuttononpushwithautolayout【发布时间】:2018-01-1115:07:47【问题描述】:首先,请检查问题(注意在导航推送视图期间灰... 查看详情

如何使用堆栈视图自动布局标签和按钮?

】如何使用堆栈视图自动布局标签和按钮?【英文标题】:Howtousestackviewtoautolayoutlabelandbutton?【发布时间】:2017-05-2210:42:18【问题描述】:如何在UIStackView内布局标签和按钮,使按钮只占用所需的空间,其余空间留给标签?由于... 查看详情

带有标签栏的 iOS 自动布局

】带有标签栏的iOS自动布局【英文标题】:iOSAutolayoutwithTabBar【发布时间】:2014-08-0512:55:47【问题描述】:我在这里有一个非常简单的视图层次结构:NavigationController(opaquebar)->TabController(opaquebar)->View->Subview子视图... 查看详情

带有填充的 snapkit 自动布局标签宽度

】带有填充的snapkit自动布局标签宽度【英文标题】:snapkitautolayoutlabelwidthwithpadding【发布时间】:2016-05-1809:47:33【问题描述】:我有几个标签那应该有以下要求最小宽度为38像素右对齐22px的高度每边宽度为8px的额外内边距到目前... 查看详情

如何使用自动布局来调整表格视图单元格中的视图大小?

】如何使用自动布局来调整表格视图单元格中的视图大小?【英文标题】:Howtouseautolayouttoresizeviewsinatableviewcell?【发布时间】:2017-10-2304:26:55【问题描述】:我有一个单元格,其中放置了四个按钮和四个标签。每个按钮都被分配... 查看详情

您如何应用自动布局约束来将标签与背景图像元素对齐?

】您如何应用自动布局约束来将标签与背景图像元素对齐?【英文标题】:Whatdoyouapplyautolayoutconstraintstolineuplabelswithbackgroundimageelements?【发布时间】:2016-02-2601:49:03【问题描述】:有关示例,请参见下面的屏幕截图,但这是问题... 查看详情

自动布局和图像视图/视图

】自动布局和图像视图/视图【英文标题】:AutoLayoutandImageViews/Views【发布时间】:2016-09-0401:26:08【问题描述】:您好,我想了解自动布局并有一个简单的问题。如果我错了,请纠正我,但与标签和按钮不同,图像视图/视图没有... 查看详情

当图像视图和标签对齐在一起时,自动布局无法正常工作

】当图像视图和标签对齐在一起时,自动布局无法正常工作【英文标题】:autolayoutnotworkingproperlyforimageviewandlabelwhenbotharealigntogether【发布时间】:2016-12-1013:24:49【问题描述】:我想在容器中水平对齐图像视图和标签,但它们对齐... 查看详情

如何使用自动布局调整视图大小以适合标签子视图?

...间】:2014-11-2508:28:48【问题描述】:我正在尝试制作一个带有一些文本的半透明黑色矩形,以向用户传达一些信息。它似乎可以工作,但是当手机的文本大小很大时,标签的内容就会被截断——视图不会扩大它的尺寸。为了创建... 查看详情

视觉效果上的文字模糊

...:我在一个图像的视图中堆叠了几个按钮和一个标签,并带有一些用于模糊的视觉效果视图。难题:按钮和标签中的文本像素化,而其他文本清晰锐利。就好像标签和按钮已被转换为渲染不良的图像。DoneDid:将按钮和标签放在... 查看详情

表格视图单元格内的图像块并更改自动布局

】表格视图单元格内的图像块并更改自动布局【英文标题】:Imageblockinsidetableviewcellandchangeautolayout【发布时间】:2016-01-1412:55:30【问题描述】:我有一个包含2个多行标签和一个UIImageView的单元格。单元格具有动态高度,并使用自... 查看详情

自动布局 - 2 个动态长度的标签

】自动布局-2个动态长度的标签【英文标题】:Autolayout-2Labelswithdynamiclength【发布时间】:2015-10-3023:10:10【问题描述】:我有一个关于自动布局的问题-通常我在使用自动布局时没有任何问题,如果单元格标签具有动态长度-但在这... 查看详情

以编程方式在 iOS 中自动布局

...看起来像image2。每次点击相应的段时,它都会改变布局。图像一是我最初得到的输出,但在下一次选择期间,它不会改变布局。我要做什么才能达到 查看详情

iOS中的自动布局问题

...【问题描述】:我在UIView类型的容器视图中有一个标签、图像和按钮。容器视图又是UIView类型的超级容器视图的子视图。所有布局都是使用autlayout视觉格式语言在代码中完成的。我想要实现的是在按下按钮时删除标签并期望超级... 查看详情

你如何自动布局约束按钮内的通知标签?

...描述】:这是我的问题的截图。我的问题是按钮标签不是视图。我无法将该通知标签锚定到它。如果我将该标签锚定到任何一侧,屏幕尺寸会影响它。示例:6sPlus和iPhoneSE在更大的手机上没问题。【问题讨论】:尝试子类 查看详情

具有固定高度的表格单元格中的自动布局多行标签

...8-1410:31:32【问题描述】:我有一个固定高度单元格的表格视图。在单元格中有3个标签;名称、地址和类型。名称标签可以是1行或2行,而其他2个标签只有1行。我想提出截图中的内容。当名称标签为2行时,它会减少单元格顶部和... 查看详情

在其他两个之间垂直居中视图

...纵横比)。这就是所有的样子:我希望约束1和2(看一下图像)的长度相同,以便“视图”在“标签”和“按钮” 查看详情