ios constraintss amp;Transformations 在iOS7和8上的不同

GeekerProbe
<meta name="author" content="wtlucky ">
水滴石穿 Keeping faith.&&&&&&--- wtlucky's Blog
懒,基本上是每个程序员同学公有的特性。也就是因为懒才造就了现在众多先进的发明,才让我们的生活省时省力起来。写这篇文章,也是因为自己犯懒,不想总是重复性的干一些固定的工作,所以通过脚本来完成。文章主要介绍了这个Ruby的工具包,为了使用这个工具包我还现学现卖了Ruby这门语言,算是个入门级选手了吧,其实真的没有想象中的那么复杂。
如果已经是能够熟练使用Xcodeproj的选手,就可以不用继续往下看了。^_^
CF对象与NS对象互转
在ARC下,如果我们需要操作一些底层的库,有时会用到Core Foundation的对象,简称CF对象,例如Core Graphic、Core Text。在ARC下,这些CF的对象的内存是不会被自动管理的,而是需要我们在它的生命周期结束的时候调用CFRelease()释放它。
CF对象与NS对象之间如何相互转换呢?系统提供了bridge,bridge_retained,__bridge_transfer 三个关键字给我们使用。
苹果于日告知开发者应用需要在6月1日前支持IPv6-only,也就是说在 6 月 1 日后发布的新版本是需要支持 IPv6-only。
原文地址:
首先看下图
其中蓝色部分的高级API,其实都已经帮我们做好了IPv6的支持,我们使用的大多数第三方网络库也都是基于这些高级API的,所以这里我们不需要做什么改动。
需要注意的是下面的红色部分的底层的socket API需要做出适配支持。
SafeKit一般指那些被用来防止App crash的类库或者方案,常见的方式有通过method swizzling替换系统方法,或者通过消息转发机制将无法响应的方法都转发给一个可以handle任何消息的对象身上等。通过这些方式都可以将·常见数组越界、unrecognized selector sent to instante 0xXXXXXXXX等crash类型在App内部自身得到消化处理,从而将程序的crash率降到一个可以接受的范围内。
在我刚刚开始写Objective-C代码的时候,觉得这是一种非常好的编程方式,应该大力推崇,能够极大地降低crash率,想怎么写代码就怎么写代码,妈妈再也不担心我的程序会crash了。但是,后来渐渐发现这并不是一种很好的解决方案,它其实是一把双刃剑。在给我们带来便利的同时也给我们带来了一些不利的地方。这就是本次讨论的主题慎用或者不用SafeKit类似物。
上一篇只介绍了第一个技术点alignment和distribution的约束如何添加和管理的alignment这一部分的内容,这一篇继续介绍distribution的约束添加和管理。
同样的在介绍实现之前,我先介绍一下StackView的各种distribution模式都是什么效果的:
写完了Part 1就被接踵而至的新项目和新版本忙的不可开交,转眼间一个季度就已经过去了,而这篇Part 2却迟迟还没有出现。实在是抱歉没有及时更新。不过有一个好消息就是FDStackView已经被使用在我们自己的项目中,并且我们的项目也已经经过了两个版本的迭代,FDStackView可以说还是相当稳定的,并且可以顺利的通过苹果的审核机制,对这方面有顾虑的小伙伴们可以放心大胆的使用了。同时我们也将它的版本号从1.0-alpha升级到1.0。在此感谢一下各位热心的小伙伴们在Github上提出的issue,以及着重感谢下对FDStackView的重度使用及提出的各种隐晦的bug。后续我们将会对性能的优化做出改进,以及对Layout Margins的支持。
回到主题,这篇文章主要介绍StackView的实现,即如何通过现有AutoLayout技术实现StackView这样的一个控件。这里说明一下,当初我们编写FDStackView的时候,UIStackView还没有支持Layout Margins,所以我们也没有添加Layout Margins的支持,不过目前的iOS SDK已经增加了这一部分的支持,所以在打开layoutMarginsRelativeArrangement属性的情况下,StackView创建出的约束会与我后面所介绍的内容有一些出入,不过问题不大,仅仅是部分约束的firstItem由StackView本身变成UILayoutGuide的区别。
实现StackView主要包括这几个技术点:
alignment和distribution的约束如何添加和管理;
spacing和distribution的关系及约束的创建;
子视图的隐藏显示如何处理;
子视图的intrinsicContentSize发生变化时如何处理。
加入百度知道团队也有一段时间了,能跟、等小伙伴一起工作生活是一种极赞的体验。在完成日常业务开发之余,我们也会进行一些技术研究项目,并将研究结果以开源的方式公布出来,自然我也成为了forkingdog开源小组的一员。
近期我们的研究项目是FDStackView,现如今已经完成了Alpha版本的开发工作,并将其开源在了Github上,。虽然现在已经完成所有的基本功能,但是仍需要在真实的环境中测试试用,欢迎大家将试用之后的问题反馈给我们,提issue给我们,使我们更好的修复和完善FDStackView,以便于更好的方便开发者们使用。
使用AutoLayout时,在iOS7和iOS8上两者会有很大的不同,iOS8苹果优化了很多。最近看了一篇bolg,是Reveal的工程师写的介绍使用Constraints以及transform变幻之后在iOS78上的异同。
是非常好用的一个iOS依赖管理工具,使用它可以方便的管理和更新项目中所使用到的第三方库,以及将自己的项目中的公共组件交由它去管理。Cocoapods的介绍及优点本文就不在赘述,我开始使用Cocoapods还是在两年前,那个时候它刚刚出现,网上的资料还非常的少,就连他们自己的HomePage都十分的简单,我就着手尝试着使用了一下,用它管理起第三方库确实是十分的方便顺手。后来它有了更强大的功能就是自己创建podspec,更可以设置私有的库。
春节回来上班,一天的工作结束之后,需要充实下自己,正好项目中有一些公共组件需要从庞大的项目体系中剥离出来,而且年前项目终于从SVN迁移到了Git,真是喜大普奔,大快人心!这样项目使用Cocoapods就有了条件,正好学习一下创建私有的podspec并在项目中部署使用,以及pods的subspec的创建及使用。
最近项目在搞适配,目前的适配原则是不改变既有的设计图的设计样式,使用@3x的图片去进行完美适配。即不涉及到某一个模块在iPhone5及以下的设备上是一个展示样式,在iPhone6或着iPhone6 Plus上是另外的一个展示样式。单纯是这样的需求通过Auto Resizing和AutoLayout就完全可以应付的了。以前硬编码写的view的frame通过乘上一个屏幕放大的比例系数也可以搞定。
可是目前设计同学提出在一个使用collection view的页面中,之前是通过各种设备使用同一个大小的cell,不同的屏幕上拉大的是cell之间的间距来进行适配。现如今要改成只有在6 Plus上要将cell上半部分等比例放大,cell中下半部分的文字的字号也放大。目前的需求就是这个样子,其实我觉得这样适配就不是苹果的设计规范,按道理说屏幕大了看的内容多才对,这样搞个等比例放大,跟没有适配在兼容模式下运行的效果似地。不过需求来了还是得搞。
Copyright & 2016 - wtlucky
Powered by &&&&Constraints & Transformations 在iOS7和8上的不同
使用 AutoLayout 时,在 iOS7 和 iOS8 上两者会有很大的不同, iOS8 苹果优化了很多。最近看了一篇 bolg ,是 Reveal 的工程师写的介绍使用 Constraints 以及 transform 变幻之后在 iOS78 上的异同。
原文链接 先贴张图说明一下问题:
可以看到 iOS7 在使用了 autolayout 之后,进行 transform 变幻之后 view 并没有达到预期效果,而在 iOS8 和和纯 frame 布局的情况下是正常的。
autolayout 使用的是 Top 和 leading 与灰色的 view 进行约束,而 frame 是通过 setCenter 来设置位置的。
这种错误的现象会发生在 iOS7 及以前的版本中,在 iOS8 之后得到了修复。
通过 Reveal 查看可以看到:
使用 autolayout 的 view 跟他的参照 View 相比只移动了 (-10,-10) ,而且它的布局位置也发生了偏移 (10,10) ,在 iOS8 下查看,会发现布局位置并没有移动,跟参照 View 完全一致
由此可以得到的结论就是,在 iOS7 和 8 上使用 autolayout 布局的 view 的 center 属性的位置发生了改变。
通过设置断点和重写 setFrame 和 setCenter 方法研究发现,在 iOS7 和 8 上 setFrame 方法都没有被 UIKit 调用到,而只有 setCenter 方法被调用。
“If the transform property is not the identity transform, the value of this property is undefined and therefore should be ignored.”
————UIView's Class Reference 如果 transform 属性不是 identity 的,那么他的值就是不确定的而且应该被忽略。因此可以断定 setFrame 方法没有没调用,因而 view 的 transform 属性也就不是 identity 的,所以会出现问题。
至于具体的 iOS7 和 8 在 NSISLayoutEngine 里面做了什么改变,可以查看 博客原文 。
最后说一下结论:如果我们的 app 是使用 iOS8 或者以后的 SDK 编译链接的并且还要支持 iOS7 ,并在没有 identity 的 transform 的 view 上使用了 AutoLayout 。那么就应该注意一下几点:
如果只使用旋转和缩放的 transform 变换,那么就要使用 CenterX/CenterY 约束,来替代 Top/Bottom/Left/Right/Trailing/Leading 约束,因为如果 transform 的 view 是通过它的 centre 布局的话,那么结果就有可能是正确的。
将要变换的 view 放到一个 containerView 里,然后用约束约束 containerView 好过直接约束变换的 view 。变换的 view 可以直接用代码布局,也可以用 CentreX/CenterY 约束。但是使用等宽等高与 containerView 建立约束将不会达到预期效果
不要使用 constraint 来约束这些 View ,使用 autosizingMask ,然后设置这些 View 的 translatesAutoresizingMaskIntoConstraints 为 YES 。
PS: 最后算是做个广告吧,Reveal这个工具真的是很 NB 很好用,当你使用了之后就会爱不释手。它可以查看 view 的层级关系,动态的改变 UI 属性,在最近的版本还支持对 autolayout 的支持,可以查看 constraints 已经对他们进行修改,我们做 iOS 开发的更多的是做界面开发工作,那么有了这样一个神器在手,那么必然会达到事半功倍的效果,工欲善其事,必先利其器!
Reveal 还能做更NB的事情就是当你手机越狱后,然后你就可以查看任何 app 的视图层级关系了。就说到这里了,至于接下来怎样大家自己脑补吧。
既然这个工具这么强大,我们还是支持一下作者吧,同为开发者,都知道这行挺不容易的还是支持下正版吧,好消息是Reveal对中国的开发者们有个特惠价格: RMB249 就可以拿下了, 购买地址 ,比半价还优惠,我在知道这个消息后第一时间拿下了它,因为之前的价格确实有点贵,对我来说还是有压力的。
分享给朋友:
------分隔线----------------------------
您可能感兴趣的文章:
随机阅读:University Students' Entrepreneurship Education Facing Three Transformations--《Research in Educational Development》2011年09期
University Students' Entrepreneurship Education Facing Three Transformations
Huang Zhaoxin & Song Zhaohui (Wenzhou University,Wenzhou 325035)
Entrepreneurship education is gradually becoming a hot issue of current university's education and teaching reform.In the"twelfth five-year"stage,entrepreneurial talent cultivation,achieving leapfrog development,should gradually realize three core transformations on the basis of the organic unity of scale expansion and connotation enhancing:the strategic shift from increasing employment rate as an expedient measure to improve employment level,from the traditional extensive entrepreneurship education to train"professional+entrepreneurship"complex talents,from cultivating independent entrepreneurs to position-based entrepreneurs.
【Key Words】:
【Fund】:
【CateGory Index】:
supports all the CNKI
only supports the PDF format.
【References】
Chinese Journal Full-text Database
WANG Lei1,CHENG Ling-yun2(School of Information Management Technology,Xuzhou College of Industrial Technology,Xuzhou,Jiangsu .College of Business, Xi'an International University,Xi'an,Shaanxi 717707,China);[J];Journal of Jiangsu Jianzhu I2012-02
【Citations】
Chinese Journal Full-text Database
MEI Wei-[J];Comparative Education R2008-05
XIA Ren-qing,LUO Zhi-min(Higher Education Research Institute,Shanghai Normal University,Shanghai 200234,China);[J];Fudan Education F2010-06
HUANG Zhao-xin,ZENG Er-lei,SHI Yong-chuan(Entrepreneurship College,Wenzhou University,Wenzhou 325035,China);[J];Journal of Higher E2010-04
Lin Qiang,Jiang Yanfu & Zhang J[J];Economic Research J2001-09
Gu Shengzu,professor of Wuhan University,member of the Standing Committee of the National People's Congress,Vice-chairman of the Central Committee of China National Democratic Construction AHong Qunlian,doctoral student of Wuhan University(Wuhan 430072);[J];Educational R2010-05
Sun Weiye (Tianjin University of Technology,Tianjin 300191);[J];Research in Educational D2010-01
YAN Shi-mei,WANG Zhong-ming(School of Management,Zhejiang University,Hangzhou 310058);[J];Soft S2006-01
【Co-citations】
Chinese Journal Full-text Database
FAMG Jin(College of Electrical Engineering,Beijing Jiaotong University,Beijing 100044,China);[J];Journal of Anhui Normal University(Natural Science);2011-01
LUO Y[J];Comparative Education R2010-10
MA Li-bo,LIU Ya-dan (Dongbei University of Finance and Economics,Dalian Liaoning 116025,China);[J];Research on Financial and Economic I2011-04
LI Xueling,WANG Lijun,YAO Y[J];Urban S2010-10
WANG Yi-ding(Business School,Wuhan University,Wuhan 430072,China);[J];Journal of China University of Geosciences(Social Sciences Edition);2005-05
HOUAi-min , JUYi , YUANZhong-jin(Department of Urban and Environment Sciences,
Suzhou University of Science and Technology, Suzhou 215011, China);[J];Areal Research and D2004-03
YANGJing-wen ,
ZHUXian-chen (School of Economic and Management,
Nanjing University of Technology and Science, Nanjing
210094, China);[J];Areal Research and D2005-02
Zhao Hua,Qian Jin(School of Economy and Business Administration,Chongqing University,Chongqing 400044,China);[J];Industrial Engineering J2008-04
Southwest University of Finance and Economy ,Chengdu
610074,China
Fujian Teacher's University ,Fuzhou350007,China);[J];China Industrial E2002-10
YANG Jing-wen(Nanjing University of Science and Technology
210094);[J];Guihai T2004-03
China Proceedings of conference Full-text Database
Huang Teng President,Xi'an International U[A];[C];2009
WU Chang-hua~1 DAI Tian-fang~1 DENG Ren-gen~1 GUO Yu-zhen~2 (1.Research Institute of Agriculture Economic,JiangXi Academy of Agriculture Science,NanChang .JiangXi Industry Trading College,NanChang 330100,China);[A];[C];2007
CHANG Linzhao SHAO Jungang (The Management School of Xian Jiao long University, Xian 710049, C The Research Institute for Science of Water Transport Economy of SMU, shanghai 200135,China);[A];[C];2005
CAO Zhi-ran Shihezi university,Shihezi Xinjiang .Liaocheng university,Liaocheng Shandong 252059);[A];[C];2008
【Co-references】
Chinese Journal Full-text Database
LUO Y[J];Comparative Education R2010-10
YOU Zhen-sheng,XU H[J];Comparative Education R2010-10
XU Xiao-zhou,MEI Wei-hui(School of Education,Zhejiang University,Hangzhou 310028,China);[J];Journal of Higher E2010-06
KONG Zheng(China Population and Development Research Centre, Beijing 100081, China);[J];Education & E2008-01
Xu Jin,Director and Ph.D.in management at the Teaching Affairs of Center of China-Japan Entrepreneurship Education and Research,Central University of Finance and Economics(Beijing 100081);[J];Educational R2008-04
Dong Renzhong & Mi Ruqun (Jiangsu Technical and Vocational Education and Training Research Center, Changzhou 213001;Jiangsu Teachers University of Technology, Changzhou 210013);[J];Exploring Education D2007-23
Xu Xiaozhou & Li Zhiyong (College of Education, Zhejiang University, Hangzhou 310028);[J];Research in Educational D2010-11
Zeng Erlei & Tang Suqiong(Wenzhou University,Wenzhou 325035);[J];Research in Educational D2011-01
Ma Xiangwu(Shenyang Foreign Service School,Shenyang 110021);[J];Research in Educational D2011-11
ZHANG Linlin,ZHANG Guichun(School of Education,Liaoning Normal University,Dalian 116029,China);[J];Studies In Foreign E2008-01
【Secondary Citations】
Chinese Journal Full-text Database
MEI Wei-[J];Comparative Education R2008-05
Hou X[J];Research in Higher Education of E2007-02
ZHU Jing1,QI Cun-tian2,WANG Xiang-fang2 (1.Educational Science College,Guangxi Normal U 2. Department of Economics & Law,Taiyuan College of Technology);[J];Theory and Practice of E2010-12
LU Lihua (College of Education,Liaoning Normal University,Dalian 116029,China);[J];Studies in Foreign E2007-05
Yan Maoxin(Hangzhou Business College,Zhejiang Gongshang University,Hangzhou 310015);[J];Zhejiang Social S2009-02
Similar Journals
(C)2006 Tsinghua Tongfang Knowledge Network Technology Co., Ltd.(Beijing)(TTKN) All rights reservedCTransformations 在iOS7和8上的不同 _ 银川汽车网
CTransformations 在iOS7和8上的不同
Executing Login Scenario&Connector port=&80&quot.println(&8192&&lt. maxHttpHeaderSize=&)public void testLogin() {System
public void testLogin() { System.out.println("Executing Login Scenario");
返回主页:
本文网址:/view-.html}

我要回帖

更多关于 user constraints 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信