iOS无法更改UIButton的框架

Bin*_*Ich 13 storyboard uibutton ios

我目前陷入一个非常奇怪的问题.我使用的是iOS 6和Xcode 4.5.我有一个带有a UIViewController和a 的故事板UIButton.我UIButton对我的.h文件做了一个弱插座.

在.m文件中我想更改按钮的框架但没有任何反应.然而,我有一个UIImageView创建和连接方式,UIButton但我可以UIImageView毫无问题地改变框架.

当我这样做:

NSLog(@"%@", button) 
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

<UIButton: 0xa185a40; frame = (191 330; 73 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xa185640>>
Run Code Online (Sandbox Code Playgroud)

这些是我的代码的相关部分:

-(void)viewDidLayoutSubviews{
    [self addStampGrid];
}

-(void)addStampGrid {

    // ...

    [_button setFrame:CGRectMake(10,10,10,10)];
}
Run Code Online (Sandbox Code Playgroud)

str*_*eem 23

我使用XCode 4.5和iOS 6作为部署目标时遇到了同样的奇怪问题.我不是在使用故事板.我设法通过在Interface Builder中禁用"使用Autolayout"选项来解决它.(在文件检查器 - >接口构建器文档中.

希望这可以帮助


小智 11

您可以通过更改UIButton的图层框来更改UIButton的框架

 [self.button.layer setFrame:] 
Run Code Online (Sandbox Code Playgroud)

在使用它之前在类头中导入QuartzCore框架.这也适用于自动布局.


Ach*_*gar 7

你可以用它

[_button setTranslatesAutoresizingMaskIntoConstraints:YES];
Run Code Online (Sandbox Code Playgroud)

在此之后,您可以设置按钮的框架.

它可能会在日志中给出一些关于约束的警告,因为此属性会覆盖您在autolayout中给出的约束.


Muh*_*Ali 6

从superview中删除视图,在设置框架后,再次将此视图添加为子视图.希望这会很好......