IOS设计iOS 7:埋没的特征息争决之道仓酷云
语法弄明白@interface@property这些工具总要知道是干嘛的怎么用基础库当iOS7刚公布的时分,全球的苹果开辟职员都立马实验着往编译他们的app,接着再花上数月的工夫来修复任何呈现的妨碍,乃至重做app。如许的了局,使得人们基本得空往探求iOS7所带来的新工具。一些分明而渺小的更新,好比说,这个办法可追溯到iOS4时期,如今被提为私有API,除此以外,另有良多埋没的特征等着我们往发掘。光滑淡进淡出动画
我这里要会商的并不是新的弹性动画APIs大概UIDynamics,而是一些更渺小的工具。CALayer增添了两个新办法:allowsGroupOpacity和allowsEdgeAntialiasing。如今,组不通明度(groupopacity)不再是甚么奇怪的工具了。iOS会屡次利用存在于Info.plist中的键UIViewGroupOpacity并可在使用程序局限内启用或禁用它。关于年夜多半apps而言,这(译注:启用)并不是所希冀的,由于它会下降全体功能。在iOS7中,用SDK7所链接的程序,这项属性默许是启用的。当它被启用时,一些动画将会变得不流利,它也能够在layer层上被把持。
一个风趣的细节,假如allowsGroupOpacity启用的话,_UIBackdropView(在UIToolbar大概UIPopoverView中的背景视图)不克不及对其含混举行动画处置,以是当你做一个alpha转换时,你大概会一时禁用这项属性。由于这会下降动画体验,你能够回退到旧的体例然后在动画时代一时启用shouldRasterize。别忘了设置得当的rasterizationScale,不然在retina的设备上这些视图会成锯齿状。
假如你想要复制的Safari显现一切选项卡时的动画,那末边沿抗锯齿属性将变得十分有效。
堵塞动画
一个小但十分有效的新办法。它是一个复杂的封装,先反省动画以后是不是启用,然后克制动画,实行块语句,最初从头启用动画。一个必要申明的中央是,它其实不会堵塞基于CoreAnimation的动画。因而,不必急于将你的办法挪用从:
1
2
3
4
;
;
view.frame=CGRectMake(...);
;
交换为:
1
2
3
[UIViewperformWithoutAnimation:^{
view.frame=CGRectMake(...);
}];
可是,尽年夜多半情形下如许也能事情的很好,只需你不间接处置CALayers。
iOS7中,我有良多代码路径(次要是UITableViewCells)必要分外的回护,避免不测的动画,比方,假如一个弹窗的巨细调剂了,那末同时显现中的表视图将由于高度的变更而加载新的cell。我一般的做法是将全部layoutSubviews的代码包扎到一个动画块中:
1
2
3
4
5
6
7
8
-(void)layoutSubviews
{
//OtherwisethepopoveranimationcouldleakintoourcellsoniOS7legacymode.
[UIViewperformWithoutAnimation:^{
;
_renderView.frame=self.bounds;
}];
}
处置长表视图
UITableView十分疾速高效,除非你入手下手利用tableView:heightForRowAtIndexPath:,它会入手下手为你表中恣意元素挪用此办法,即使没有可视对象,就好比其内涵的UIScrollView只是往猎取准确的contentSize。此前有一些变通办法,但都欠好用。iOS7中,苹果公司终究供认这一成绩,并增加tableView:estimatedHeightForRowAtIndexPath:,这个办法提早了实践转动工夫本钱的年夜部分。假如你不晓得一个cell的巨细,前往UITableViewAutomaticDimension便可。
关于节头/尾(sectionheaders/footers),如今也有相似的API了。
UISearchDisplayController
苹果的searchcontroller利用了新的技能来简化挪动searchbar到navigationbar的历程。启用displaysSearchBarInNavigationBar就能够了(除非你还要用到scopebar,我只能说你真不幸)。我却是很喜好这么做,但对照遗憾的是,iOS7上的UISearchDisplayController貌似被培植的对照严峻,特别是iPad。苹果公司看上往像是没工夫处置这个成绩的模样(原文:Appleseemstohaverunoutoftime),关于显现的搜刮了局其实不会埋没实践的表视图。在iOS7之前,这并没有成绩,可是如今searchResultsTableView有一个通明的背景致,使它看上往相称糟。作为一种变通办法,你能够设置不通明色大概取道于富于技能的手腕来取得你所希冀的。关于这个控件会呈现林林总总的了局,当利用displaysSearchBarInNavigationBar时乃至不会展现搜刮表视图。
你的了局大概有所分歧,但我是利用了一些手腕来让displaysSearchBarInNavigationBar事情的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
-(void)restoreOriginalTableView
{
if(PSPDFIsUIKitFlatMode()&&self.originalTableView){
self.view=self.originalTableView;
}
}
-(UITableView*)tableView
{
returnself.originalTableView?:;
}
-(void)searchDisplayController:(UISearchDisplayController*)controller
didShowSearchResultsTableView:(UITableView*)tableView
{
//HACK:iOS7requiresacruelworkaroundtoshowthesearchtableview.
if(PSPDFIsUIKitFlatMode()){
if(!self.originalTableView)self.originalTableView=self.tableView;
self.view=controller.searchResultsTableView;
controller.searchResultsTableView.contentInset=UIEdgeInsetsZero;//Remove64pixelgap
}
}
-(void)searchDisplayController:(UISearchDisplayController*)controller
didHideSearchResultsTableView:(UITableView*)tableView
{
;
}
这里,别忘了在viewWillDisappear中挪用restoreOriginalTableView,不然会发送crash。
记着这是独一的办理举措;大概有很多保守的办法不交换视图自己,但这个成绩的确应当由苹果公司来修复。(TODO:RADAR!)
分页
UIWebView利用了新的技能来主动分页带paginationMode的网站。有一年夜堆与此功效相干的新属性:
1
2
3
4
5
@property(nonatomic)UIWebPaginationModepaginationModeNS_AVAILABLE_IOS(7_0);
@property(nonatomic)UIWebPaginationBreakingModepaginationBreakingModeNS_AVAILABLE_IOS(7_0);
@property(nonatomic)CGFloatpageLengthNS_AVAILABLE_IOS(7_0);
@property(nonatomic)CGFloatgapBetweenPagesNS_AVAILABLE_IOS(7_0);
@property(nonatomic,readonly)NSUIntegerpageCountNS_AVAILABLE_IOS(7_0);
如今而言,固然这大概并不是关于年夜多半网站都有效,但它一定是天生复杂的电子书浏览器或显现文本的一种更好的体例。加点乐子的话,请实验将它设置为UIWebPaginationModeBottomToTop。
会飞的Popovers
想晓得为何你的popovers疯了一样各处乱飞?在UIPopoverControllerDelegate协定中有一个新的代办署理办法使你能把持它:
<p>1
2
3
-(void)popoverController:(UIPopoverController*)popoverController
<p> 培训的时候很痛苦,每天要待12个小时,上午讲课,下午和晚自习解决作业,看文档,学习的时候感觉就是资料太少,而且看着资料也不明所以,非常痛苦, 有办法利用自己手头的电脑立刻开始这个美妙旅程的。 看完这个你就可以有多种选择来踏入做应用的阶段 在百度搜索你想要了解的类名(苹果的cocoa和cocoatouch框架的类名很有特点很容易搜到,前缀都是NS or UI),看别人写的博客详解 好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。 其次学习方法和学习心态很重要,在学习当中应该保持一颗良好的心态。应该借鉴别人好的学习方法,大家互相帮助,取长补短。 中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者, 培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。 iPhone文件系统:创建、重命名以及删除文件,NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。 培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。 才在自己的Windows电脑上安装配置成功了一个完美的Mac OS X Lion(10.7.4)系统,而且下载了Xcode4.5的最新版本。虽然不能实机调试,但是作为iOS开发学习已经非常完美了。 其实在培训的过程中,学习到最多的就是查资料的方式,当时感觉老师好坑,什么都不告诉我们,让我们自己去查,但是现在觉得还是要自己解决问题,这样才能理解的更加深入。 重要的是,放眼全球也的确找不到第二个如苹果iOS平台这样健壮、完整、先进而且为开发者带来真实收益的开发平台来。 因为我们老师也是自学的,给我们讲课说的最多的就是百度,谷歌,查文档。 这个办法就是在WindowsXP或Win7的电脑上,使用vmware虚拟机来搭建一个真实的Mac OS X环境。 好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。 好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。 好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。
页:
[1]