使用 StackView 实现魔术般的视图旋转适配
2016-08-13 00:45
260 查看
上周,我参加了 iOSDevCampDC 并发表了演讲,在这里很荣幸的听到了 @atomicbird 关于 StackViews 的演讲。我之前写过一篇文章,向大家介绍了使用 StackViews 来做简易动画的有多方便,更被使用 StackViews 能够非常简单地完成横竖屏的切换所震惊。
例如,下面这个简单的有着一张图片和一些文本的视图。它在竖屏下看起来挺好的,但是一旦屏幕旋转了,就不那么好看了…
可是呢,仅仅改为在Storyboard中使用一个简单的StackView(不需要写额外的代码),你就可以拥有一个好用的旋转适配效果了。
步骤
第一个步骤是一个垂直排列的 StackView,里面放一个 ImageView 和一个 TextView:
奇诡一招
这里的关键就是当屏幕方向从竖屏变为横屏的时候,我们需要同时把 StackViews 从垂直切换为水平。
为了实际看看这个过程,我推荐在 Storyboard 中改变到水平方向模式(超爱 Xcode8 的这个表单)。
注意到 Xcode 8 的 Storyboard 中告诉你在水平方向上高度被压缩了这点十分便利。因为这点爱死 Xcode 8 了。
这招就是在高度为紧凑 (Compact) 的时候把 StackView 设为水平方向的。要做到这个,选中 StackView,然后来到属性视图。你会发现在 StackView 轴向属性下面的一个小小的+ — 点击它!
现在选择 Any Width -> Compact Height -> Any Gamut:
这里的关键当然是紧凑高度。现在你可以在紧凑高度模式下 (Compact Height mode) 改变 StackView 的布局到水平方向了!
这样就完成了!你可以立刻看到在 Storyboard 中改变方向的后的效果,甚至都不用运行这个应用。
有一个值得注意的是,在 Storyboard 中有一个 bug — 在你改变屏幕方向的时候,可能会出现一个关于你的布局的警告。要解决这个警告,只要在变化前后的 StackView 的AutoLayout属性中,改变 hugging 或 compression 的优先级(哪个都行)就好。¯(ツ)/¯
结论
我没有在为屏幕旋转方向适配布局这方面研究太多,所以这个技巧绝对是一个值得记住的好东西。手动的为不同的压缩尺寸改变 AutoLayout 属性听起来就不让人开心,特别是产品经理叫你多加“就一个小小的东西啦”进去的时候…再次感谢 @atomicbird 和我们分享这个小但是超有用的小技巧。
例如,下面这个简单的有着一张图片和一些文本的视图。它在竖屏下看起来挺好的,但是一旦屏幕旋转了,就不那么好看了…
可是呢,仅仅改为在Storyboard中使用一个简单的StackView(不需要写额外的代码),你就可以拥有一个好用的旋转适配效果了。
步骤
第一个步骤是一个垂直排列的 StackView,里面放一个 ImageView 和一个 TextView:
奇诡一招
这里的关键就是当屏幕方向从竖屏变为横屏的时候,我们需要同时把 StackViews 从垂直切换为水平。
为了实际看看这个过程,我推荐在 Storyboard 中改变到水平方向模式(超爱 Xcode8 的这个表单)。
注意到 Xcode 8 的 Storyboard 中告诉你在水平方向上高度被压缩了这点十分便利。因为这点爱死 Xcode 8 了。
这招就是在高度为紧凑 (Compact) 的时候把 StackView 设为水平方向的。要做到这个,选中 StackView,然后来到属性视图。你会发现在 StackView 轴向属性下面的一个小小的+ — 点击它!
现在选择 Any Width -> Compact Height -> Any Gamut:
这里的关键当然是紧凑高度。现在你可以在紧凑高度模式下 (Compact Height mode) 改变 StackView 的布局到水平方向了!
这样就完成了!你可以立刻看到在 Storyboard 中改变方向的后的效果,甚至都不用运行这个应用。
有一个值得注意的是,在 Storyboard 中有一个 bug — 在你改变屏幕方向的时候,可能会出现一个关于你的布局的警告。要解决这个警告,只要在变化前后的 StackView 的AutoLayout属性中,改变 hugging 或 compression 的优先级(哪个都行)就好。¯(ツ)/¯
结论
我没有在为屏幕旋转方向适配布局这方面研究太多,所以这个技巧绝对是一个值得记住的好东西。手动的为不同的压缩尺寸改变 AutoLayout 属性听起来就不让人开心,特别是产品经理叫你多加“就一个小小的东西啦”进去的时候…再次感谢 @atomicbird 和我们分享这个小但是超有用的小技巧。
相关文章推荐
- 使用NavigationController, 或ModalViewController实现旋转新视图横屏,再旋转返回
- uicollectionview 使用uibutton或者uiimageview实现旋转出现scale的问题
- UIPickerView组件的使用之随机点菜系统(一)——利用AutoResizing进行屏幕适配,拖线进行实现
- Android UI设计之<一>使用ImageView实现ProgressBar旋转效果
- StackView实现自定义segment效果,且完美做到屏幕适配
- iOS使用pageViewController实现多视图滑动切换
- 使用 UICollectionView 实现网格化视图效果
- RecycleView与GridView的结合使用实现“云相册”粗略界面视图?
- 使用轨迹球来实现视图的旋转
- 转载:使用UITableView实现树视图
- 安卓控件使用系列16:ImageView实现图片缩放和旋转
- 微信小程序例子——如何使用scroll-view组件实现视图垂直滚动
- StackView(堆视图的使用)
- 手势检测实现相册的左右滑动(并加上移动与旋转的特效) 首先,activity_main.xml里,使用ViewFlipper组件(可使用动画控制多个组件之间的切换效果) <?xml version="
- 关于使用Fragment结合ViewPager实现滚动页面视图
- 数据库(SQL)之trigger(触发器)的使用以及视图(view)的基本实现
- android使用ViewSwitcher实现视图切换
- android 视图动画的使用,Animation重写 实现旋转效果
- Android 使用View的旋转实现漂亮的动画效果
- 使用Eclipse RCP创建视图并实现视图间消息传递(二)