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

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

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

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

    self.activityTableView.tableHeaderView = activityHeaderView;it

    CGRect frame = _activityTableView.frame;io

    frame.size.width = SCREEN_WIDTH;table

    frame.size.height = 245;im

    _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来设置,不然错误!!!!activity

相关文章
相关标签/搜索