使用Autolayout时改变UIButton的大小?

时间:2013-05-06 19:19:22

标签: ios uiview uibutton xib autolayout

我对ios很新。我正在开发一个项目,它经常在整个应用程序中使用某个UIView类。这个类只是一个用背景颜色做一些透明度的图像。这到目前为止工作正常。这个类有时作为单独的UIView存在,有时作为按钮子视图存在。

当我将这个UIVut添加到UIButton作为子视图时,UIView的全部内容以完整大小显示,但按钮的可点击区域保持xib中定义的大小,除非关闭Use Autolayout(即使我手动尝试设置按钮的框架。)

我想在xib上放置一个UIButton作为占位符,然后根据初始化的UIView的叠加图像的大小定义其大小/可点击区域。

这是可能的,还是我误解了xib文件/ autolayout的使用?

在ViewDidLoad下我有......

- (void)viewDidLoad{

    [theButton addSubview:_theView];
    CGRect buttonFrame = theButton.frame;
    buttonFrame.size = CGSizeMake(_theView.getSize.width,_theView.getSize.height);
    [theButton setFrame:buttonFrame];
}

但是,当我尝试调用setFrame之前和之后打印按钮信息时,框架保持相同的大小。

(请注意'我添加了_theView.getSize')

1 个答案:

答案 0 :(得分:6)

  1. 在Autolayout下,视图在viewDidLoad处没有框架。在viewWillAppear:viewDidLayoutSubviews中尝试使用您的代码。
  2. 在Autolayout下,您不设置框架。您可以编辑约束。设置框架将一直有效,直到下一个布局通过,此时布局将恢复为约束所描述的布局。
  3. 要调整按钮的大小以适合子视图,您可以尝试这样的(使用可视格式语言):|-[theView]-|但它将取决于您的xib中存在的约束。