仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2322|回复: 18
打印 上一主题 下一主题

[学习教程] IOS设计iOS 7:埋没的特征息争决之道仓酷云

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:38:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
语法弄明白@interface@property这些工具总要知道是干嘛的怎么用基础库当iOS7刚公布的时分,全球的苹果开辟职员都立马实验着往编译他们的app,接着再花上数月的工夫来修复任何呈现的妨碍,乃至重做app。如许的了局,使得人们基本得空往探求iOS7所带来的新工具。一些分明而渺小的更新,好比说[NSArrayfirstObject],这个办法可追溯到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显现一切选项卡时的动画,那末边沿抗锯齿属性将变得十分有效。
堵塞动画

一个小但十分有效的新办法[UIViewperformWithoutAnimation:]。它是一个复杂的封装,先反省动画以后是不是启用,然后克制动画,实行块语句,最初从头启用动画。一个必要申明的中央是,它其实不会堵塞基于CoreAnimation的动画。因而,不必急于将你的办法挪用从:

1
2
3
4

[CATransactionbegin];
[CATransactionsetDisableActions:YES];
view.frame=CGRectMake(...);
[CATransactioncommit];



交换为:

1
2
3

[UIViewperformWithoutAnimation:^{
view.frame=CGRectMake(...);
}];



可是,尽年夜多半情形下如许也能事情的很好,只需你不间接处置CALayers。
iOS7中,我有良多代码路径(次要是UITableViewCells)必要分外的回护,避免不测的动画,比方,假如一个弹窗的巨细调剂了,那末同时显现中的表视图将由于高度的变更而加载新的cell。我一般的做法是将全部layoutSubviews的代码包扎到一个动画块中:

1
2
3
4
5
6
7
8

-(void)layoutSubviews
{
//OtherwisethepopoveranimationcouldleakintoourcellsoniOS7legacymode.
[UIViewperformWithoutAnimation:^{
[superlayoutSubviews];
_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?:[supertableView];
}
-(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
{
[selfrestoreOriginalTableView];
}



这里,别忘了在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>
简单生活 该用户已被删除
沙发
发表于 2015-1-24 15:16:08 | 只看该作者
培训的时候很痛苦,每天要待12个小时,上午讲课,下午和晚自习解决作业,看文档,学习的时候感觉就是资料太少,而且看着资料也不明所以,非常痛苦,
变相怪杰 该用户已被删除
板凳
发表于 2015-1-25 12:15:52 | 只看该作者
有办法利用自己手头的电脑立刻开始这个美妙旅程的。
深爱那片海 该用户已被删除
地板
发表于 2015-2-2 22:02:12 | 只看该作者
看完这个你就可以有多种选择来踏入做应用的阶段
5#
发表于 2015-2-2 22:30:09 | 只看该作者
在百度搜索你想要了解的类名(苹果的cocoa和cocoatouch框架的类名很有特点很容易搜到,前缀都是NS or UI),看别人写的博客详解
老尸 该用户已被删除
6#
发表于 2015-2-6 10:06:13 | 只看该作者
好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。
愤怒的大鸟 该用户已被删除
7#
发表于 2015-2-10 00:12:39 | 只看该作者
其次学习方法和学习心态很重要,在学习当中应该保持一颗良好的心态。应该借鉴别人好的学习方法,大家互相帮助,取长补短。
不帅 该用户已被删除
8#
发表于 2015-2-28 02:37:23 | 只看该作者
中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,
爱飞 该用户已被删除
9#
发表于 2015-3-9 18:43:18 | 只看该作者
培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。
柔情似水 该用户已被删除
10#
发表于 2015-3-10 12:39:37 | 只看该作者
iPhone文件系统:创建、重命名以及删除文件,NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。
因胸联盟 该用户已被删除
11#
发表于 2015-3-17 06:47:01 | 只看该作者
培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。
活着的死人 该用户已被删除
12#
发表于 2015-3-21 23:40:37 | 只看该作者
才在自己的Windows电脑上安装配置成功了一个完美的Mac OS X Lion(10.7.4)系统,而且下载了Xcode4.5的最新版本。虽然不能实机调试,但是作为iOS开发学习已经非常完美了。
谁可相欹 该用户已被删除
13#
 楼主| 发表于 2015-4-8 08:48:14 | 只看该作者
其实在培训的过程中,学习到最多的就是查资料的方式,当时感觉老师好坑,什么都不告诉我们,让我们自己去查,但是现在觉得还是要自己解决问题,这样才能理解的更加深入。
冷月葬花魂 该用户已被删除
14#
发表于 2015-4-21 15:52:56 | 只看该作者
重要的是,放眼全球也的确找不到第二个如苹果iOS平台这样健壮、完整、先进而且为开发者带来真实收益的开发平台来。
蒙在股里 该用户已被删除
15#
发表于 2015-4-21 20:54:25 | 只看该作者
因为我们老师也是自学的,给我们讲课说的最多的就是百度,谷歌,查文档。
兰色精灵 该用户已被删除
16#
发表于 2015-4-28 06:49:14 | 只看该作者
这个办法就是在WindowsXP或Win7的电脑上,使用vmware虚拟机来搭建一个真实的Mac OS X环境。
第二个灵魂 该用户已被删除
17#
发表于 2015-5-1 06:09:07 | 只看该作者
好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。
飘灵儿 该用户已被删除
18#
发表于 2015-5-10 03:39:27 | 只看该作者
好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。
灵魂腐蚀 该用户已被删除
19#
发表于 2015-6-11 12:06:39 | 只看该作者
好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 12:25

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表