iOS 8 Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束
使用Storybord或Xib 的 AutoLayout入门晋阶 - WhoJun
iOS界面布局之三——纯代码的autoLayout及布局动画
不明原因的约束报错的两种处理方式
iOS9下代码创建约束
AutoLayoutMultiplier 源码
Size-Classes-Demo 源码
IOS页面自动布局 之 NSLayoutConstraint基础篇
ios autolayout中NSLayoutAttributeLeft(Right)与NSLayoutAttributeLeading(Trailing)区别
NSLayoutAttributeLeft 和 NSLayoutAttributeRight 代表从左右进行布局
NSLayoutAttributeLeading和 NSLayoutAttributeTrailing 代表从前后进行布局
在天朝 NSLayoutAttributeLeft 和 NSLayoutAttributeLeading 是一个效果的,布局习惯从左到右
但在有些国家地区,NSLayoutAttributeRight和NSLayoutAttributeLeading 是一个效果,布局习惯从右往左.使用推荐:NSLayoutAttributeLeading和 NSLayoutAttributeTrailing(比较常用)
如何设计一个自动布局库:以SDAutoLayout为例
iOS 8 AutoLayout与Size Class自悟 胡明涛 good
动画篇-layout动画初体验
动画篇-Transform和KeyFrame动画
iOS自动布局进阶用法
详细对比IB开发与纯手码开发的优劣。 董铂然
ib storybord好在哪里? 1 项目结构清晰 2代码少就是bug少 3 大部分功能可以直接在图形化界面修改,更加面向对象 4 后期维护方便 5 开发模式自由
Storyboard的爱与恨
多Storyboard协作
解 决如上问题的方法就是,尽量将项目的界面分割在多个Storyboard文件中。一个最佳实践是,按照项目功能模块来区分故事板,例如 Login.Storyboard,Chat.Storyboard,Person.Storyboard等。尽量把每个Storyboard的 Scene数量控制在20个以内。
同时,Scene间的转场我们依然可以采用Segue,并且使用起来和单个Storyboard无异。这要多亏Apple在iOS 9新推出的UIStoryboard Reference。
代码可视化
还有什么能比代码可视化更加炫酷的呢?作为前端工程师,最享受的时候,就是枯燥的代码和算法变成了优美的动画。但这一切都只在按下command+R之后。
现在,通过Storyboard,我们也可以在编译时实时预览我们的代码所产生的效果。
Storyboard的弊端
Storyboard也并非十全十美的。它依然有许多的问题亟待解决,有些致命的问题,更是成为导致许多开发者放弃Storyboard的原因。在iOS9普及率已经达到77%的今天,Storyboard仍然有很多问题需要完善。
难以维护
Storyboard 在某些角度上,是难以维护的。我所遇到过的实际情况是,公司一个项目的2.0版本,设计师希望替换原有字体。然而原来项目的每一个Label都是采用 Storyboard来定义字体的,因此替换新字体需要在Storyboard中更改每一个Label。
幸亏我们知道Storyboard的源文件是XML,最终写了一个读取-解析-替换脚本来搞定这件事。
性能瓶颈
当 项目达到一定的规模,即使是高性能的MacBook Pro,在打开Storyboard是也会有3-5秒的读取时间。无论是只有几个Scene的小东西,还是几十个Scene的庞然大物,都无法避免。 Scene越多的文件,打开速度越慢(从另一个方面说明了分割大故事板的重要性)。
让人沮丧的是,这个造成卡顿的项目规模并不是太难达到。
我猜想是由于每一次打开都需要进行I/O操作造成的,Apple对这一块的缓存优化没有做到位。可能是由于Storyboard占用了太多内存,难以在内存中进行缓存。Whatever,这个问题总是让人困扰的。
然而需要指出的是,采用Storyboard开发或采用纯代码开发的App,在真机的运行效率上,并没有太大的区别。
错误定位困难
Storyboard的初学者应该对此深有体会。排除BAD_EXCUSE错误不说,单单是有提示的错误,就足以让人在代码和Storyboard之间来回摸索,却无法找到解决方案。
一个典型的例子是,在代码中删除了IBOUTLET属性或者IBAction方法,但是却忘了在Storyboard中删除对应的连接,运行后crash。然而控制台只会输出一些模糊其词的错误描述。
1
2
3
|
*** Terminating app due to uncaught exception
'NSUnknownKeyException'
,
reason: '[ setValue:forUndefinedKey:]:
this
class is not key value coding-compliant
for
the key drawButton.'
|
有经验的开发者可以从drawButton这个关键字中找到突破口,但大部分刚接触Storyboard的开发者,会被困在其中。
最后
综 合其利弊,毅然选择了站在Storyboard这边。一方面是其提供的便利,另一方面是Apple对Storyboard的大力支持。这一点宏观上看,可 以在以往对Storyboard的改进和增强上看出,微观上看,几乎所有iOS 8之后的simple code都或多或少采用了Storyboard作为界面开发工具。有理由相信,Storyboard的未来是光明的。
愿大家在Storyboard的路(keng)上,越走越远。
iOS 9: UIStackView入门
Stack View会被当成Container View。所以它是一个不会被渲染的UIView子类。它不像其他UIView子类一样,会被渲染到屏幕上。这也意味着设置其backgroundColor属性或重载drawRect:方法都不会产生任何效果。
Getting Started with Auto Layout in Xcode 5 英文教程
Autolayout小结(二)
AutoLayout使用代码写约束 good
AutoLayout 实现固定宽度动态高度的 ScrollView
2.1 约束类型
布局约束(NSLayoutConstraint类,公有)
内容大小约束(NSContentSizeLayoutConstraint类,私有)
自动尺寸调整约束(NSAutoresizingMaskLayoutConstrain类,私有)
布局支持约束(_UILayoutSupportConstraint类,私有)
原型约束(NSIBPrototypingLayoutConstraint类,私有)
利用xib(storyboard)添加约束(兼容性)【原创】 good
iOS绘制虚线方法【原创】