系統(tǒng)就會(huì)自動(dòng)根據(jù)UINavigationBar和statusBar將view下移64珍德,frame從(0,64)開始努酸。這樣服爷,我們?cè)诓季謨?nèi)部控件的時(shí)候依然可以從(0,0)開始获诈,而不必?fù)?dān)心上部被UINavigationBar遮擋了仍源。
模糊視圖效果
//模糊效果
UIVisualEffectView *bgView = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]];
bgView.alpha = 0.9f;
bgView.frame = CGRectMake(0, 0, WIDTH, HEIGHT);
bgView.layer.cornerRadius = BALL_RADIUS / 2;
bgView.clipsToBounds = YES;
[self addSubview:bgView];
超級(jí)棒的模糊效果
//系統(tǒng)對(duì)于作為controllerview的第一個(gè)subView的全屏UIScrollView,會(huì)自動(dòng)處理其contentInset舔涎,使其頭部和尾部的內(nèi)容起始和末尾時(shí)不會(huì)被UINavigationBar和UITabBar擋住笼踩。但是如果你關(guān)閉系統(tǒng)這一自動(dòng)功能的話
self.automaticallyAdjustsScrollViewInsets = NO;
UIScrollView的內(nèi)容就會(huì)從frame的(0,0)位置開始顯示亡嫌,這樣開頭就被UINavigationBar嚎于,尾部就被UITabBar擋住而只能看到模糊一片,除非用戶使勁下拉上拉挟冠。這時(shí)就需要你自己去設(shè)置contentInset了于购。
與此同時(shí),由于現(xiàn)在view的frame都是從(0知染,0)開始肋僧,對(duì)于非UIScrollView及其子類就會(huì)有些麻煩了,因?yàn)槿绻涌丶rame如果不考慮UINavigationBar的高度控淡,就會(huì)被UINavigationBar擋住嫌吠,當(dāng)然我們可以自己在布局的時(shí)候加上UINavigationBar的高度就行了。
其實(shí)還有一種更方便的方法就是設(shè)置其edgesForExtendedLayout屬性逸寓,該屬性默認(rèn)為UIRectEdgeAll居兆,意為view會(huì)充分?jǐn)U展至屏幕邊緣包括上下左右,而不管有沒有遮擋竹伸,此時(shí)就是view的frame即為整個(gè)屏幕泥栖。但是不像UIScrollView簇宽,其它view沒有contentInset一說,所以automaticallyAdjustsScrollViewInsets對(duì)其并不起作用吧享。此時(shí)魏割,我們修改edgesForExtendedLayout屬性
self.edgesForExtendedLayout = UIRectEdgeNone;
系統(tǒng)就會(huì)自動(dòng)根據(jù)UINavigationBar和statusBar將view下移64,frame從(0钢颂,64)開始钞它。這樣,我們?cè)诓季謨?nèi)部控件的時(shí)候依然可以從(0殊鞭,0)開始遭垛,而不必?fù)?dān)心上部被UINavigationBar遮擋了。
另一種情況就是我們不想要那種半透明模糊效果操灿,設(shè)置UINavigationBar的translucent為NO锯仪。此時(shí),view的frame也都會(huì)從(0趾盐,64)開始庶喜,而此時(shí)對(duì)于UIScrollView,automaticallyAdjustsScrollViewInsets就不再起作用了救鲤。
總結(jié):UIScrollView如果要實(shí)現(xiàn)穿透UINavigationBar的效果久窟,其frame就必須從(0,0)開始本缠,然后設(shè)置合適的contentInset斥扛,如果UINavigationBar下方還有懸浮view的話,就不能依賴系統(tǒng)的automaticallyAdjustsScrollViewInsets了搓茬,需要自己來算contentInset犹赖。還有其他的特殊需求,就需要組合使用以上屬性了卷仑。
關(guān)于AFN一些相關(guān)知識(shí)點(diǎn)
manager.requestSerializer = [AFJSONRequestSerializer serializer];//請(qǐng)求--設(shè)置請(qǐng)求參數(shù)類型
manager.responseSerializer = [AFHTTPResponseSerializer serializer];//響應(yīng)--不確定返回類型時(shí)設(shè)置--得到NSData類型
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];//如果報(bào)接受類型不一致請(qǐng)?zhí)鎿Q一致text/html或別的
//設(shè)置cell分割線閉合
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
[cell setSeparatorInset:UIEdgeInsetsZero];
}
if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
[cell setPreservesSuperviewLayoutMargins:NO];
}
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
}
//tableview的編輯狀態(tài)
自定義的cell峻村,編輯狀態(tài)不右移,需要把自定義的控件放在contentView,編輯就可以右移了
以后有零碎代碼片段繼續(xù)更新~