欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

IOS 10开发中经常遇到的问题总结

程序员文章站 2022-06-24 23:15:06
ios 10开发中经常遇到的问题总结。 1.如何手动取消uidispalaysearchcontroller的取消搜索状态 #pragmamarkuisearchdisplaydelegate -...

ios 10开发中经常遇到的问题总结。

1.如何手动取消uidispalaysearchcontroller的取消搜索状态

#pragmamarkuisearchdisplaydelegate

-(void)searchdisplaycontrollerdidbeginsearch:(uisearchdisplaycontroller*)controller

{

for(uiview*viewincontroller.searchbar.subviews)

{

nslog(@"%d__|---%@",__line__,view);

for(uiview*subviewinview.subviews)

{

nslog(@"%d__|!!!%@",__line__,subview);

//获取"取消"按钮

if([subviewiskindofclass:[uibuttonclass]])

{

uibutton*cancelbutton=(uibutton*)subview;

//获取点击"取消"按钮的响应事件(actionsfortarget这个方法返回的是一个数组)

self.cancelsearchselstring=[[cancelbuttonactionsfortarget:controller.searchbarforcontrolevent:uicontroleventtouchupinside]objectatindex:0];

//响应通知,执行方法直接用上面获得的响应事件方法,转换一下(这是个知识点,可以扩展下)

[[nsnotificationcenterdefaultcenter]addobserver:controller.searchbarselector:nsselectorfromstring(self.cancelsearchselstring)name:@"cancelsearch"object:nil];

}

}

}

}

#pragmamarkuisearchbardelegate------点击搜索按钮

-(void)searchbarsearchbuttonclicked:(uisearchbar*)searchbar{

//获取你想搜索的最终完整关键字(一般可以用来做搜索历史展示)

nslog(@"%s__%d__|%@",__function__,__line__,searchbar.text);

//点击按钮时,发布取消搜索状态通知

[[nsnotificationcenterdefaultcenter]postnotificationname:@"cancelsearch"object:nil];

//发布---响应---取消通知

[[nsnotificationcenterdefaultcenter]removeobserver:searchbarname:@"cancelsearch"object:nil];

}

2.如何知道导航栏是pop还是push

-(void)viewwilldisappear:(bool)animated

{

[superviewwilldisappear:animated];

if([selfismovingfromparentviewcontroller])

{

nslog(@"viewcontrollerwopped");

}

else

{

nslog(@"newviewcontrollerwaspushed");

}

}

3.更改导航栏颜色

if(nsfoundationversionnumber>nsfoundationversionnumber_ios_6_1){

//tuffforios7andnewer

[self.navigationcontroller.navigationbarsetbartintcolor:[uicoloryellowcolor]];

}

else{

//dostuffforolderversionsthanios7

[self.navigationcontroller.navigationbarsettintcolor:[uicoloryellowcolor]];

}

4.如何更改导航栏title文字的颜色

[self.navigationcontroller.navigationbarsettitletextattributes:

@{nsforegroundcolorattributename:[uicolorredcolor],

nsfontattributename:[uifontfontwithname:@"mplus-1c-regular"size:21]}];

5.减少多余的tableview空的cell

tableview.tablefooterview= [uiview new];

6.返回cgfloat_min

//footer间距

-(cgfloat)tableview:(uitableview*)tableviewheightforfooterinsection:(nsinteger)section

{

//return1.0f;

returncgfloat_min;

}

7.减少默认tableview的sectionheader和footer的高度,直接设置0是无效的,最小是1.0f

-(cgfloat)tableview:(uitableview*)tableview

heightforheaderinsection:(nsinteger)section{

if(section==0){

return6.0;

}

return1.0;

}

-(cgfloat)tableview:(uitableview*)tableview

heightforfooterinsection:(nsinteger)section{

return5.0;

}

-(uiview*)tableview:(uitableview*)tableview

viewforheaderinsection:(nsinteger)section{

return[[uiviewalloc]initwithframe:cgrectzero];

}

-(uiview*)tableview:(uitableview*)tableview

viewforfooterinsection:(nsinteger)section{

return[[uiviewalloc]initwithframe:cgrectzero];

}

8.设置中号字体

uifont*font=[uifontfontwithname:@"helveticaneue-medium"size:14.0f];

//ios8.2开始

[uifontsystemfontofsize:14weight:uifontweightmedium];