如何设置动态宽度& iOS中autolayout中视图的高度?

时间:2015-06-11 09:58:30

标签: ios objective-c xcode macos autolayout

我在我的超级视图中有一个UIView。我已经设置了一些约束。现在我想在不同的设备上视图的大小应该是不同的。如果我设置了修复宽度&高度,然后我得到了错误的结果。我已尝试用户纵横比,但在多个设备上使视图太大或太小。

我想要高度和高度宽度应该以相同的比例增加,它必须看起来与所有设备相同。我想要有灵活的视图高度和宽度。请告诉我们如何做到这一点?

这是图像    enter image description here

先谢谢

4 个答案:

答案 0 :(得分:3)

使用大小类。它有助于为不同的设备进行不同的设置。 http://www.raywenderlich.com/83276/beginning-adaptive-layout-tutorial https://youtu.be/IwSTXY0awng?t=2m12s

答案 1 :(得分:2)

enter image description here最简单的方法是创建widthheight约束的插座。

然后根据电话在viewDidLoad动态更改它。

要检查手机是哪个,可以检查设备高度,例如iPhone 4S的480,iPhone 5,5S的568等等

@interface ScoreListViewController (){
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *widthConstraint;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *heightConstraint;

@end



- (void)viewDidLoad {
[super viewDidLoad];
// Set the value according to your requirement
if(4S){
self.heightConstraint.constant=100;
}

 }

答案 2 :(得分:2)

尝试按照以下屏幕截图进行操作:

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

  

您将得到如下结果

enter image description here

答案 3 :(得分:0)

我写了一篇关于动态更改布局的自动布局的博客article 对于每个屏幕尺寸,您可以以编程方式添加约束 算法

  1. 获取当前设备尺寸
  2. 根据设备大小获取所需的约束
  3. 然后以编程方式添加约束

  4. 根据方向改变

    • 收听UIDeviceOrientationDidChangeNotification通知
    • 根据通知添加新约束
    • 然后调用setNeedsUpdateConstraints
      有关更多信息和示例代码,请查看博客文章和this github repo