AutoLayout——何为intrinsic content size
上一篇说到了约束就是等式和不等式。仅仅知道其原理还是没法拉出符合需求的线。所以这一篇主要看来什么是intrinsic content size,以及它有什么用。
在Xcode中,差点儿全部控件或视图,都有这个属性。在size inspector界面
imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="Xcode中的intrinsic content size" title="">
开发中用到的一些控件或视图,本身就自带大小,比方UIButton控件,设置完title后就能知道这个UIButton是文字的大小再加上两个固定的button margin。
像这样的控件或视图本身就带有的高度、宽度。就叫做intrinsic content size(固定内容尺寸)。
一些经验分享?
普通情况下,我是通过四种操作来设置布局的。
- 右键拉线。
- Align面板做对齐操作(position)
- pin面板做边距或尺寸操作(size)
- Resolve面板用来更新约束或者更新边框
后三种就是xib或storyboard界面的右下角的三个小button
自己拉约束的时候,总会碰到Xcode报红色或黄色的错(例如以下图),曾经怎么拉都没办法拉好约束。乃至于将全部该加的都加上了。但还是没能达到想要的效果。这让人非常恼怒。
只是当你懂了一点英语,知道报的错是什么意思,基本就都能够攻克了。
imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="红色或黄色错误" title="">
像以下这样的,将鼠标放在Icon上(报错的地方),就会有提示,不得不说Xcode这个IDE已经相当好用了。除了偶尔崩溃受不了。
提示已经说得非常明显了。AutoLayout须要Icon的Y轴位置或者高度才干完毕对其位置或尺寸的判断。所以咱们通过加Y轴的位置或者高度就能够了。当然详细要加Y轴位置还是高度得看你的需求。最好还是都试一试。非常easy就能懂的。
固定内容尺寸究竟什么用?
一个关于button的样例:
在下图中出现的黄色线,这是什么意思呢?刚開始我也看不明确,Xcode都报warning了。
依照提示去改动的话又达不到我想要的效果,由于黄色线是想要我把中间这个button的大小调整到黄色框的大小。这明显不符合我的须要。
好吧说说为什么会出现黄色虚线框,这就是固定内容尺寸的原因。我给中间这个MidButton设置的背景图的大小是75*75的。而如今MidButton被我缩小到35*35,这时候Xcode是依据图片的原大小来判断MidButton的固定内容尺寸的。
这时候就坑爹了。执行后的结果例如以下。
似乎唯一的方法仅仅能是调整图片的大小了。
imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="黄色线" title="">
妥协的解决的方法:设定MidButton的宽和高。
![Uploading Paste_Image_791544.png …]
加上宽度和高度的约束后,就能够临时攻克了。只是却没办法依据不同机型的宽度去适配。
所以。看到这里应该就明确固有内容尺寸是什么了。要用AutoLayout的话这个概念非常关键。之前跟着斯坦福视频的老头子做过一阵子的matchismo。一种相似卡牌的游戏。里面有16个button。当时用AutoLayout做真是太烦躁了,全然没法做适配,由于仅仅有一种素材,而AutoLayout去渲染后默认出现的是控件或图片的固有内容尺寸,所以当时仅仅能做一种机型的布局。去github逛了一圈也是有这个问题存在。所以用AutoLayout的话,button图片的大小非常重要,特别是要适配的时候。一定要配套每种机型的素材。
什么控件有固定内容尺寸?
它就用于辅助系统计算布局。以下看看有哪一些控件或视图是自带固定内容尺寸的。
- UIView和NSView(OSX)没有固定内容尺寸
- Sliders 在iOS中仅仅定义了宽度,而在OSX中则有可能是宽度、高度或两者
- Labels ,buttons,switches。text fields,都有高度和宽度
- Text views 和image views 固定内容宽度可变
总结
假设你有非常多有背景图片的button须要布局的话,autolayout慎用,不然当你调不出想要的效果又不知道原因在哪的时候回特别抓狂。总之你要随便调整控件或视图的内容,不依照固有内容尺寸的话。是不大可能的了。苹果这么去规定也是有其道理的。毕竟人家都给出了UI的设计规范了嘛。依照规范来,通过审核也easy。
AutoLayout——何为intrinsic content size的更多相关文章
- 转:AutoLayout中的Content Hugging 和 Content Compression Resistance
OS6中引入了AutoLayout,极大的方便了UI元素的布局,现在已经过去一年了,并且大部分设备的系统也已经升级到了iOS6,是时候要使用此项技术了. 在AutoLayout的学习中有两个概念官方文 ...
- iOS开发之AutoLayout中的Content Hugging Priority和 Content Compression Resistance Priority解析
本篇博客的内容也不算太复杂,算是AutoLayout的一些高级的用法.本篇博客我们主要通过一些示例来看一下AutoLayout中的Content Hugging Priority以及Content C ...
- 在代码中使用Autolayout – intrinsicContentSize和Content Hugging Priority
我们继续来看在代码中使用Autolayout的话题.先说intrinsicContentSize,也就是控件的内置大小.比如UILabel,UIButton等控件,他们都有自己的内置大小.控件的内置大 ...
- 使用Autolayout实现UITableView的Cell动态布局和高度动态改变
本文翻译自:stackoverflow 有人在stackoverflow上问了一个问题: 1 如何在UITableViewCell中使用Autolayout来实现Cell的内容和子视图自动计算行高,并 ...
- Notes of learning AutoLayout
在XCode5中,如果我们添加一个Button或者Label,或者其他的什么标准View,而不设置任何constraints,IB会自动生成constraints,而这些constraints是fix ...
- 先进的自动布局工具箱(autolayout)
原文:Advanced Auto Layout Toolbox 这篇文章并没有具体介绍自动布局的一些基本概念,主要讲解了一些高级的使用方法和调试技巧,文中有的句子比较长,意思也有点难懂,所以需要静下心 ...
- iOS 8 AutoLayOut入门
http://blog.csdn.net/asdfg13697116596/article/details/42562565 iOS 8 AutoLayOut入门自从iOS6带来Auto Layout ...
- AutoLayout深入浅出五[UITableView动态高度]
本文转载至 http://grayluo.github.io//WeiFocusIo/autolayout/2015/02/01/autolayout5/ 我们经常会遇到UITableViewCell ...
- iOS 自动布局 Autolayout 优先级的使用
一.约束的优先级 0.屏幕适配 发展历程 代码计算frame -> autoreszing(父控件和子控件的关系) -> autolayout(任何控件都可以产生关系) -> siz ...
随机推荐
- 解决Android中多次点击(快速点击多次 )启动多个相同界面的问题
通过以下代码可以解决这个问题. /** * 防止快速点击 * @param ev * @return */ @Override public boolean dispatchTouchEvent(Mo ...
- netty服务端实现心跳超时的主动拆链
一.服务器启动示例: public class MySocketServer { protected static Logger logger = LoggerFactory.getLogger(My ...
- linux 免输入密码脚本
#! /usr/bin/expectset command [lindex $argv 0]set passwd [lindex $argv 1]spawn su - root -c $command ...
- jdk动态代理与cglib动态代理例子
1.JAVA的动态代理特征:特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常会存在关联关系,一个代理类的对象 ...
- jmeter 插件下载下载方法
1.进入下载插件网页:https://jmeter-plugins.org/install/Install/ 下载plugin-manager.jar 并放在jmeter 的lib/ext文件夹下 2 ...
- 微信小程序 自定义单选复选按钮组的实现(用于实现购物车产品列表功能)
(一)单选按钮组 模型图如下: index.js Page({ data: { parameter: [{ id: 1, name: '银色' }, { id: 2, name: '白色' },{ i ...
- 如何获取 XAML 控件的模板代码
有时候 .NET 自带提供的控件并不能满足我们的实际需求,需要进行修改,或者参考代码来建立新的控件. 可以在编辑器的文档大纲窗口中,找到所需的对象,然后在其上点右键,编辑模板,编辑副本 弹出创建 St ...
- 【Android UI】如何做一个纯粹的Android app UI 设计
原文:http://android.eoe.cn/topic/summary 许多开发者会在多个平台上发布应用.如果您打算为 Android 开发应用,请记住在不同的平台需要遵守不同的要求和惯例.在某 ...
- 【Unity】11.8 关节
分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 Unity提供了下面的关节组件:铰链关节(Hinge Joint).固定关节(Fixed Joint).弹簧关节(Spr ...
- python 给文件批量加‘“’ ”,"
file = open('face.txt','r') filew = open('face1.txt','w') try: for line in file: print(line) if line ...