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