iOS开发 带xib的自定义View自适应屏幕问题

转自:http://www.07net01.com/program/2016/01/1210764.html


[摘要:为了省时光,自界说的View,给它弄一个xib,内里的子View,间接正在xib里划推几个就好了,切切出念到,整出去的自界说View,不管我 以何种姿态的设置frame,减载其余中央,它的frame皆是(0,0] 


为了省时间,自定义的View,给它搞一个xib,里面的子View,直接在xib里划拉几个就行了,万万没想到,整出来的自定义View,无论我

以何种姿势的设置frame,加载别的地方,它的frame都是(0,0,600,600).网上搜了很久,也没搜到类似问题,最后看到了一篇文章<XIB,AutoLayout使用心得>,

上面有段说的是

对于通过loadNamedXib加载到内存中的View,必须手动指定其frame中的width和height,然后再通过addSubView的方式添加到现有的View树中,使用Xib表示的View在布局时,是以600*600的默认宽高进行的。文章链接:http://blog.youkuaiyun.com/a345017062/article/details/45916833

瞬间顿悟,原来我loadNamedXib的时候没有给frame赋值啊

上代码

#import <UIKit/UIKit.h>


@interface XSDCalculationFeeView : UIView


@end


#import "XSDCalculationFeeView.h"

@implementation XSDCalculationFeeView


// 对于通过loadNamedXib加载到内存中的View,必须必须给View的frame赋值,然后再通过addSubView的方式添加到现有的View树中. 因为使用Xib表示的View在布局时,是以600*600的默认宽高进行的。

- (instancetype)initWithFrame:(CGRect)frame {

    self = [super initWithFrame:frame];

    if (self) {

        self = [[NSBundle mainBundle] loadNibNamed:@"XSDCalculationFeeView" owner:self options:nil][0];

        self.frame = frame;// 必须给View的frame赋值

    }

    return self;

}


@end

注:self.frame = frame;//这句代码必须有, 必须给View的frame赋值 这个是必须要的,切记!否则View的frame将始终是(0,0,600,600)!

ps:2015 12.25 修改: 以上加载带XIB的View,在iOS7上会crash,以及在viewDidLoad加载时,会导致不能屏幕适配,只有在点击按钮,创建新的View时候,才可用;具体原因,正在研究中...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值