使用 NSLayoutConstraint 实例化和设置 UIButton 子类的大小

Posted

技术标签:

【中文标题】使用 NSLayoutConstraint 实例化和设置 UIButton 子类的大小【英文标题】:Instantiating and setting size of a UIButton subclass with NSLayoutConstraint 【发布时间】:2012-10-05 18:59:36 【问题描述】:

如何在实例化UIButton 时设置它的大小,以供NSLayoutConstraint 使用?

代码:

UIButtonRaisedSilver *loginButton = [UIButtonRaisedSilver buttonWithType:UIButtonTypeCustom];
[loginButton addTarget:self action:@selector(login) forControlEvents:UIControlEventTouchUpInside];
[loginButton setTitle:@"Log in" forState:UIControlStateNormal];

NSDictionary *views = @@"tableView" : self.tableView, @"loginButton": loginButton, @"signupButton": signupButton;

[NSLayoutConstraint constraintsWithVisualFormat:@"V:[tableView]-50-[loginButton()]"
                                        options:NSLayoutFormatAlignAllCenterX
                                        metrics:nil
                                          views:views];

【问题讨论】:

【参考方案1】:

事实证明,宽度和高度也是 ios6/(OSX 10.8) 中约束系统的一部分(我认为它的 10.8 - 还没有为 Mac OS 开发)。

确保高度的约束是垂直的,并在括号中设置高度,如下所示...

例如:

[NSLayoutConstraint constraintsWithVisualFormat:@"V:[loginButton(30)]"
                                    options:NSLayoutFormatAlignAllCenterX
                                    metrics:nil
                                      views:views];

【讨论】:

以上是关于使用 NSLayoutConstraint 实例化和设置 UIButton 子类的大小的主要内容,如果未能解决你的问题,请参考以下文章

错误:NSInvalidUnarchiveOperationException:无法实例化名为 NSLayoutConstraint 的类

以编程方式创建的动画 NSLayoutConstraint

NSLayoutConstraint网点总是零,而其他网点则不是

将实例变量与 NSLayoutConstraint 的视觉格式一起使用是不是有最佳实践?

在 NSLayoutConstraint 上设置运行时属性

iOS:使用 NSLayoutConstraint 将对象堆叠在一起