iOS Xib尺寸适配屏幕尺寸

有用过XIb 的同学 在自己设置 VC 下的子控件的Frame时 可能会发现 在ViewDidload 下面 获取 的 self.view.frame.size.height 是Xib的尺寸 非当前VC的尺寸,这就存在了Xib 的尺寸 和 屏幕的尺寸 不匹配的情况。

这时 我们只需要 在   viewWillLayoutSubviews 获取 VC的frame即可。另外 在有XIb 的 View 下面可通过调用 layoutSubviews 方法 来重设 子控件 frame。

示例代码如下:

- (void)viewDidLoad {
    [super viewDidLoad];

    NSLog(@"the view height is %f", self.view.frame.size.height);
    
}

- (instancetype)initWithCoder:(NSCoder *)aDecoder{
    self = [super initWithCoder:aDecoder];
    
    NSLog(@"the view height is %f", self.view.frame.size.height);
    
    return self;
}

- (void)awakeFromNib{
    [super awakeFromNib];
    
    NSLog(@"the view height is %f", self.view.frame.size.height);
    
}

- (void)layoutSublayersOfLayer:(CALayer *)layer{
    
    NSLog(@"the view height is %f", self.view.frame.size.height);
    
}

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    
    NSLog(@"the view height is %f", self.view.frame.size.height);
    
}

- (void)viewWillLayoutSubviews{
    
    NSLog(@"the view height is %f", self.view.frame.size.height);
    
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    
    NSLog(@"the view height is %f", self.view.frame.size.height);
    
    PlayViewController *palyVC = [PlayViewController new];
    [self.navigationController pushViewController:palyVC animated:YES];
    
}

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值