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
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
iOS storyboard 修改frame问题
在iOS项目中使用storyboard 布局界面,如果启用了AutoLayout, sizeClass 在viewDidLoad修改frame值是看不到效果的(iOS7以前好像可以) 这与iOS的生命周期有关 - (void)awakeFromNib; - (void)viewDidLoad; - (void)viewWillAppear:(BOOL)animated; - (voi
iOS storyboard 用代码修改frame问题
在iOS项目中使用storyboard布局界面,如果启用了Autolayout,sizeclass在viewDidLoad修改frame值是看不到效果的这与iOS的生命周期有关- (void)awakeFromNib;- (void)viewDidLoad;- (void)viewWillAppear:(BOOL)animated;- (void) viewDidAppear:(BOOL)anim...
在storyboard或xib中,设置了View的约束,代码更改View的坐标大小
在storyboard或xib中,设置了View的约束,在代码中直接更改frame的坐标,运行程序,是不起作用的,应该更改约束才会起作用。 1.找到需要更改的那条约束,链接到代码里,跟普通控件链接是一样的。如图链接好的约束 2.在需要更改的地方添加代码: _lineImageViewLeftConstraint.constant = 0; 3.如果需要加动画效果,还是要设置fra
ios xib和代码的frame布局 iOSXib布局后代码修改约束的值
转自溺水的小小鱼 如何修改autolayout 约束的值? 1 2 3 4 5 6 目前我已知的方法有5种 1.修改frame(有时候可能会不起作用,但可以做动画) 2.修改约束的float值 3.使用VisualFormat 语言 4.使用 constraintWithItem,按倍率改变   如  2x+1=Y
Storyboard/代码设置中设置控件属性
-------------代码设置视图阴影、边框---------- // 添加阴影 cell.layer.shadowColor = [UIColor blackColor].CGColor;// 阴影颜色     cell.layer.shadowOffset = CGSizeMake(0, 0);// 偏移距离     cell.layer.shadowOp
swift可以直接修改控件的frame
-
iOS XCode storyboard 设置控件三等分屏幕的约束添加
在storyboard中需要设置按钮三等分屏幕宽度的步骤如下: 1.首先我们需要先拖拽三个button到storyboard中,同时给每个button添加不同的背景色以便于区分: 2.拖拽好button后,我们就可以开始添加相关的约束了。首先添加cyan按钮的约束,先选中cyan按钮,然后添加如下的约束,距左10、距下200、高度30: 3.添加完cyan
StoryBoard AutoLayout不能获取正确frame的问题
viewDidLoad 不行,但是一旦我们使用的AutoLayout适配后,在这个方法中就不能获得子控件的真实frame,因为在此时,AutoLayout的适配并没有完成。 在viewDidAppear、或者viewDidLayoutSubViews里面, 可以,当需要对frame进行相关的操作,在这个方法里面
iOS--Xib文件中定义的控件修改frame问题
iOS--Xib文件中定义的控件修改frame问题 方法总结:(本人已经验证的是方法1,方法2还未使用,毕竟其他部分控件需要使用auto) 1、在.m的- (void)viewDidAppear:(BOOL)animated方法中操作。 或者在一个事件里面(比如按钮点击事件里)修改。 2、在xib文件中,取消Auto Layout。截图如下:
获取XIB和Storyboard生成的控件
XIB 有些情况下需要动态增加一些子控件。 如果用代码直接构建子控件,就是比较麻烦。尽量少写代码。 所以想到的是用xib文件来实现UIView。 问题是UIView不能直接从xib文件构造。 可以通过写UIViewController来加载xib。但是缺点是会得到很多小的UIVIewController实例,而实际上我们又不怎么需要。   xib/nib文件可以通过NSBundl