使用Autolayout时改变UIButton的大小?

Div*_*er0 0 uibutton xib uiview ios 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];
}
Run Code Online (Sandbox Code Playgroud)

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

(注意'_theView.getSize'是我添加的)

jrt*_*ton 6

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