frame使用问题:不能直接改变frame

1 在改变控件的frame时,不能直接改变控件的frame,直接改变不了,一定要这样处理:

   ActivityHeaderView *activityHeaderView = [[[NSBundle mainBundle] loadNibNamed:@"ActivityHeaderView" owner:self options:nil] firstObject];

    //错误做法:activityTableView.frame = CGRectMake(0, 0, SCREEN_WIDTH, 85);

    self.activityTableView.tableHeaderView = activityHeaderView;

    CGRect frame = _activityTableView.frame;

    frame.size.width = SCREEN_WIDTH;

    frame.size.height = 245;

    _activityTableView.frame = frame;

 

2 在使用frame来约束控件的位置时,控件的frame是相对于其一级父控件来约束的,如下图自定义小的xib中有控件图片和label,该组合控件自定义的xib在包含一个uiscroview的大的xib中,并且,小的xib是大xib中uiscollview的子控件。当要对小xib中的图片进行约束时,图片的frame各对应值的设置是相对于一级父控件小xia来设置的,而不是相对于大xib来设置的,如果相对于大xib来设置就是错误的,得不到正确的图片。同理,设置小xib在大xib中的位置,则小xib的frame各对应值要相对于一级父控件大xib来设置,即总结为:子控件设置位置时,一定要相对于一级父控件来设置,否则是错误的。[A addSubview:B];B的位置frame设置一定要相对于A来设置,否则错误!!!!

转载于:https://my.oschina.net/llfk/blog/774900

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值