如何在 iOS 中设置视图的最大宽度?

Posted

技术标签:

【中文标题】如何在 iOS 中设置视图的最大宽度?【英文标题】:How can I set maximum width of a view in iOS? 【发布时间】:2016-07-11 13:35:02 【问题描述】:

我的应用程序有一个基本的登录屏幕、一个外框以及其中的一些文本字段和按钮。我将框设置为填满屏幕。但是,在某些设备上,此框会太大。如何设置视图的最大宽度和高度?

【问题讨论】:

没关系,我什么都可以用。我宁愿在它的故事板上做。是的,我使用自动布局。 好吧,您只需为该框设置约束,左右,以满足间距。 Fo 示例左右约束常量 20. 【参考方案1】:

您可以使用自动布局约束,使框适应屏幕大小,但不超过给定的宽度和高度。为此,请在宽度和高度上设置“小于或等于”约束。

    向框添加顶部、底部、前导、尾随、宽度和高度约束。 将顶部、底部、前导和尾随约束的优先级设置为 (750)。 将宽度和高度约束的关系设置为小于或等于 (≤)。默认值为等于。 将宽度和高度约束的优先级设置为必需 (1000)。 将宽度和高度约束的常数设置为您希望框的最大大小。

【讨论】:

这看起来模棱两可,因为如果高度超过给定常数,自动布局如何知道要打破哪个约束。它可以打破附着在屏幕底部的顶部约束或附着在顶部的底部约束。这是如何工作的? @Sikander 这应该与其他约束一起使用,例如中心约束,以保持视图对齐。 这是一个很好的解决方案。对于遇到 UITextField 不遵守设置为 750 的约束的问题的任何人,使用 950 可以实现相同的结果并解决问题。【参考方案2】:

您可以通过编程方式完成此操作

some_view.widthAnchor.constraint(lessThanOrEqualTo: view.widthAnchor, multiplier: 0.45)        
some_view.heightAnchor.constraint(lessThanOrEqualTo: view.widthAnchor multiplier: 0.45)

0.45 基本上是说 some_view 的宽度和高度最大为超级视图宽度的 45%。

【讨论】:

【参考方案3】:

如果你想给一个视图的框架来修复所有设备,那么使用这个widthheight

self.view.frame.size.width,self.view.frame.size.height

或者您可以通过将视图拖动到其边缘来提供自动布局TopBottomTrailingLeading constraints

【讨论】:

【参考方案4】:

对于该容器视图,您只需使用四个约束(即顶部空间、底部空间、前导空间、尾随空间)。

【讨论】:

【参考方案5】:

如果您使用的是 Interface Builder,您可以:

ctrl + clic 您的视图并将蓝色箭头拖到超级视图。

按住shift选择“等宽”和“等高”

然后转到视图的约束(小标尺图标)并设置一个像 0.5 这样的乘数,使您的视图宽度/高度等于其父视图各自尺寸的一半。

【讨论】:

【参考方案6】:
UIView *viw=[UIView alloc]init];
viw.frame=CGRectMake(x,y,CGFLOAT_MAX,h);

【讨论】:

设置框架与应用约束不同。 @rvios 请为您的代码添加一些解释。 SO不鼓励仅使用代码的答案。谢谢。【参考方案7】:

试试下面的代码可能对你有帮助

yourviewObject.frame=CGRectMake(yourviewObject.frame.origin.x,yourviewObject.frame.origin.y,self.view.frame.size.width,yourviewObject.frame.size.height)

【讨论】:

以上是关于如何在 iOS 中设置视图的最大宽度?的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何在 android constraintLayout 中设置视图的最大宽度?

如何在 CSS 网格布局中设置列的最大宽度?

如何在自动布局中设置视图下方不同数量按钮的宽度

css 如何在css中设置表格最大宽度100%?

如何在 CSS 中设置图像的最大宽度

如何在 IE 中设置 svg+xml 图像的最大宽度?