如何在 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】:如果你想给一个视图的框架来修复所有设备,那么使用这个width
和height
self.view.frame.size.width,self.view.frame.size.height
或者您可以通过将视图拖动到其边缘来提供自动布局Top
Bottom
Trailing
和Leading 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 中设置视图的最大宽度?的主要内容,如果未能解决你的问题,请参考以下文章