使用NSLayoutConstraints设置自定义UIButton框架

时间:2015-12-26 06:04:54

标签: ios objective-c uibutton

所以我正在使用这个自定义UIButton类:https://github.com/victorBaro/VBFPopFlatButton

在文档中,作者使用了这个例子。

//Example
self.flatRoundedButton = [[VBFPopFlatButton alloc]initWithFrame:CGRectMake(100, 150, 30, 30)
                                          buttonType:buttonMenuType
                                         buttonStyle:buttonRoundedStyle
                                         animateToInitialState:YES];
self.flatRoundedButton.roundBackgroundColor = [UIColor whiteColor];
self.flatRoundedButton.lineThickness = 2;
self.flatRoundedButton.tintColor = [UIColor flatPeterRiverColor];
[self.flatRoundedButton addTarget:self
                       action:@selector(flatRoundedButtonPressed)
             forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.flatRoundedButton];

由于buttonType是一个get-only属性,我不能只创建一个VBFPopFlatButton实例然后分配类型,即我必须在创建实例时分配类型。我只是想知道是否有一种方法来初始化而不必显式设置框架(使用CGRectMake)因为我想稍后使用约束来设置按钮的框架。

OR

如果有一种方法可以在初始化后覆盖CGRectMake吗?

1 个答案:

答案 0 :(得分:1)

VBFPopFlatButton没有buttonType属性。它具有currentButtonType属性,可以读/写,因此您可以稍后分配该类型。

无论如何,只需将框架设置为CGRectZero即可。然后关闭translatesAutoresizingMaskIntoConstraints

self.flatRoundedButton = [[VBFPopFlatButton alloc] initWithFrame:CGRectZero
    buttonType:buttonMenuType buttonStyle:buttonRoundedStyle animateToInitialState:YES];
self.flatRoundedButton.translatesAutoresizingMaskIntoConstraints = NO;

然后你可以在按钮上添加你想要的任何约束。