2 u014207420 u014207420 于 2014.09.21 15:34 提问

Xcode 6 我用代码改变storyboard的控件的frame值为何无法成功,菜鸟新手求大神指点
#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIButton *btn;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    NSLog(@"%f %f %f %f",_btn.frame.origin.x,_btn.frame.origin.y,_btn.frame.size.height,_btn.frame.size.width);
    _btn.frame = CGRectMake(20, 20, 280, 280);
    NSLog(@"%f %f %f %f",_btn.frame.origin.x,_btn.frame.origin.y,_btn.frame.size.height,_btn.frame.size.width);
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

在运行后 输出结果为:

2014-09-21 15:25:34.779 test[2473:80334] 20.000000 20.000000 30.000000 30.000000
2014-09-21 15:25:34.784 test[2473:80334] 20.000000 20.000000 30.000000 30.000000

5个回答

NXAristotle
NXAristotle   2014.10.11 12:30
已采纳

Xcode6默认是勾选这两项的,去掉才能有效.不过,以后屏幕多了,用自动布局来适配屏幕是大势所趋,再用代码来适配将会是场噩梦,建议还是习惯用autolayout+sizeclasses适配屏幕CSDN移动问答

Atto_
Atto_   2014.09.27 22:35

在storyboard里的视图上加入一个按钮,然后在ViewController里创建IBOutlet,输入三行代码。除了这个你还做了别的吗?

LyTsai
LyTsai   2015.07.04 14:53

我也遇到这个问题了,是设置滚动视图的时候,打印出frame的height已经改了,但显示的时候还是按照拖到storyboard上的高度来的。

wxy318
wxy318   2015.09.19 20:44


试试这个

baidu_34050050
baidu_34050050   2016.02.22 23:46

因为运行时候你所设的值被主故事板中的值给修改了,在 _btn.frame = CGRectMake(20, 20, 280, 280);打个断点就能看到是先执行完你所写的代码再显示

故事板内容的。如果想修改就在viewDidAppear:方法修改

-(void)viewDidAppear:(BOOL)animated
{
_btn.frame = CGRectMake(20, 20, 280, 280);
NSLog(@"%f %f %f %f",_btn.frame.origin.x,_btn.frame.origin.y,_btn.frame.size.height,_btn.frame.size.width);
}

Csdn user default icon
上传中...
上传图片
插入图片