如何在 ios 中以编程方式添加约束

Posted

技术标签:

【中文标题】如何在 ios 中以编程方式添加约束【英文标题】:How to add constraints programmatically in ios 【发布时间】:2015-07-08 06:32:04 【问题描述】:

我在 ios 中以编程方式创建了我的 UI 元素。在所有 iphone 中一切都很好,但我的按钮被拉长了。

btnLogin=[[UIButton alloc] initWithFrame:CGRectMake(80, h-90, w-160, 40)]; 这就是我创建按钮的方式。我知道在界面生成器中我们可以使用自动布局。但是如何以编程方式向此按钮添加约束?

因为现在按钮宽度会根据屏幕大小而变化,尽管左右两侧边缘是固定的。如何避免元素根据设备进行处理,并且我想管理按钮和父视图边框之间左右两侧之间的相同间隙。

我该怎么做?请帮我 谢谢

【问题讨论】:

【参考方案1】:

这就是你想要的

 UIButton * button = [[UIButton alloc] init];
button.backgroundColor = [UIColor redColor];
[self.view addSubview:button];

NSDictionary * buttonDic = NSDictionaryOfVariableBindings(button);
button.translatesAutoresizingMaskIntoConstraints = NO;

NSArray * hConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-80-[button]-80-|"
                                                                 options:0
                                                                 metrics:nil
                                                                    views:buttonDic];
[self.view addConstraints:hConstraints];

NSArray * vConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[button(40)]-90-|"
                                                                 options:0
                                                                 metrics:nil
                                                                   views:buttonDic];
[self.view addConstraints:vConstraints];

截图 苹果手机 6

iPhone 6p

更新:

H:|-80-[button]-80-|,这会在水平方向创建约束,按钮左右到superview保持为80

"V:[button(40)]-90-|",这在Vertical处创建约束,按钮高度保持为40,底部到superview底部保持为90

【讨论】:

谢谢,你能解释一下这是什么@"H:|-80-[button]-80-|"和@"V:[button(40)]-90-|"

以上是关于如何在 ios 中以编程方式添加约束的主要内容,如果未能解决你的问题,请参考以下文章

如何在目标 c 中以编程方式添加约束

如何在 ios swift 中以编程方式创建自动布局等宽约束?

如何在ios swift中以编程方式创建自动布局等宽度约束?

在 iOS 8 中以编程方式将视图中的按钮居中使用约束

iOS - 约束在 viewdidload 中以意想不到的方式动画?

如何使用自动布局在 ios 中以编程方式在 UIview 上添加 UIbutton