精华内容
下载资源
问答
  • 也可以手动添加约束,在文档略图中选中View Controller,并在菜单中选中eitor->Resolve Auto Layout Issues ->Adding missing Constraints 创建完约束后会发现随便点击一个子视图,便会显示其在父视图中的位置...

    1.把一个视图拖动到另一个视图中,Xcode不会自动为它创建约束(即子视图与父视图的联系),在编译程序时才生成一系列默认的约束。
    也可以手动添加约束,在文档略图中选中View Controller,并在菜单中选中eitor->Resolve Auto Layout Issues ->Adding missing Constraints
    在这里插入图片描述
    创建完约束后会发现随便点击一个子视图,便会显示其在父视图中的位置信息且其属性中的traits已改变:
    在这里插入图片描述

    展开全文
  • xcode 约束

    2016-06-17 17:16:00
    接触约束挺好玩的,对于页面设计帮助不是一星半点的,但是想设计出好的页面品质来,还是要对约束深入研究一番的。 技术成长就是从:不敢->就做了能咋地->没啥事儿->胆子变大->技术成长->遇到问题-&...

     

         接触约束挺好玩的,对于页面设计帮助不是一星半点的,但是想设计出好的页面品质来,还是要对约束深入研究一番的。
         技术成长就是从:不敢->就做了能咋地->没啥事儿->胆子变大->技术成长->遇到问题->解决问题。
         可能你不相信,但是我的经历告诉我,技术就是勇于突破。
         
         最原始,我仅能使用固定大小和方位实现约束定位,心里时刻谨记必须给控件一个大小一个方位,这个栅栏必须设定好,否则问题不可控。这是基础,并不代表成长了,这些问题就不再适用,一直适用,而且高技术都是在基础之上,扎实的基础之上凸显的。此时,我的控件设计,仅能制作大小固定,方位固定的页面设计。

     

     
         花俏的页面,都是随着服务器请求数据后,根据数据量来断定此控件的大小,这还仅是第一步,他的大小根据数据量更新后,别的控件还要相对于此控件的变化而变化。嚯!也就是说,我要实现一个控件的可变性,还要实现另外一个控件的相对性。上文所讲,我仅能实现单个控件的布局,说白了就是,别的控件有没有跟这个控件一点关系没有,因为大小我确定了,方位也确定了,顶多是你没了,我就相应往哪边移动一下。两个控件还从来没有涉及到相互制约相互约束的地步。
         
         后来,因为页面的需求,不得不设计一些变动的控件,比如UILabel,这个控件本来就是个长度和高度都容易变化的一个控件,不可能设计成死值,如果大屏幕,你值写小了,右面空白一大片;如果小屏幕,你值写大了,文字显示不全不说也没有...做人性化提示;你想设计成5s的,大屏幕看着小,小屏幕看着大,更是不好。所以这个控件不要写成死值。可恨的是,他自己就够难对付的,又增加一个控件,右边的小标签,咱们暂定为小图片,索性也把左面的UILabel控件假设成title。如果左边的title文本少,那么右边的image就会向左移动,因为image与title的距离固定,如果title的字多,image就向右移动,正常情况下,都可能有特殊的title文本很多,此时image随着title的增加向右移动,但是根据常识,我们不能让image消失或者显示一半,允许title不完全显示,以…方式友好的提示用户,此title较长,点击后可看完整文本。
         那么问题来了,(网上说了,此语句属于敏感词汇,已经发现某某学校保留追求法律责任的权利)那么问题来了,怎么设计,怎么实现title的可变长度,又不会因为太长而挤压image的显示,同时又能满足image忠实的追随title呢?
         以前,所有约束都没有详细理解,并运用,仅作为会使用,但具体怎么回事,或者在此基础上还能玩出哪些花样来,并不清楚。那今天咱们就详细的叙述一下,以往,咱们设定约束都是title距离左边距10点,距离上边距10点,长宽确定,image同样,距离title的左边距5点,上边距10点,长宽固定。

     

      

     

     
     
         这样显然不能实现title的可变。一个蒙蔽的错误写法是,将image距离右边距设定好,上边距不变,长宽不变,删除左边距;title删除宽定值,增加右边距image5点。点击更新,此时title你会发现被拉的好长,image在屏幕最右侧,此时你能看到,title的宽值是一个具体的数字。那么好,增加title的宽值!你会问了,刚才不是让删除宽值,咋又加上了?客观别急,听我详细道来。

     

    上图是删除title右边线的,也就举例一下,往后的添加删除就不做演示了。
     

     

    上图,我们为title增加了固定宽度。
         
         此时,我们增加了title的宽,但是我们要更改具体参数,以前我们设定宽都是等于,宽值=多少多少值,此时我们改一下改成“<=”,要是不知道这是什么意思的,改行吧,别说iOS不适合你,整个IT行业都不欢迎你。

     

     
         然后,你会发现,title的边框立马变成黄色,说明你可以更新,且慢!此刻,我们要做一件伟大的事,删除image的右边距,重新增加image距离title的左边距,同时删除title距离image原来的右边距,乱没乱,乱了就一个一个删,或者你先删除title距离image的右边距,删完了再增加image距离title的左边距。
         
         其实,就想胶皮套一样,把image的右面放开,将左边约束起来,此时,黄色的边框增加成两个了,也就是说两个控件都迫不及待的等着你更新呢,满足他,更新。啪,两个控件都向左移动了。此时你可以尝试把title的文本增加点,再增加点,增加到超出限制,你会发现“…”正常出现了,你再试试减少点,再减少点,更新一下,呵呵,是不是挺好玩,两个好基友控件始终黏糊在一起。

     

    上图为更改两控件约束后,没更新前状态截图。
     
    我再没帮朋友解决此类问题之前,一直以为我遇见我自己的新陆地了呢,以为成长了呢。虽然也是成长了,那么问题来了(重要的事情说三遍,我等你来查我水表,劳资不怕!),其实也怕。你还记得设定的那个”<=(我就不说这是什么意思,咋地吧?)“的值吗?记得,好比咱们设定<=302,总共宽度是375是合理的。但是朋友问我,那要是6p可怎么办,我又增加了难度,我想要是4s怎么办?6p人太多,哈哈哈哈!楼主邪恶了。
         
         这真是一个问题,你设定的是4.7英寸屏,要是6p大屏和4s小屏怎么办呢?大屏会造成image的右面有空白,但是title还显示成“…”,这肯定不符合啊。要是4s呢,右边image都被屏幕吃了,左边也没显示万恶的“…”啊。我。。。当时被朋友问的无言以为,你知道,咱们是去装逼的,连人家电脑,帮人家解决问题,打包票的会解决,然后你笑场了!把我恨的,千万头(此处省略三个字)在飞奔啊。
         我承认,问了大神才懂得,但是我确实对约束有了跨越式的理解,我们一直在讨论title的问题,这样吧,我们在增加点难度,有四个控件,右面有两个,左边有两个,最左边是动态的title不变,左二还是image也不变,右边是固定的两个UILabel暂且起名标签3和标签4,我们让标签3和标签4始终在右侧显示不动,长度不变,时刻显示。

     

    上图为标签四的约束,设定标签3和4大小相等都距离右侧5点宽高固定,四个控件整体水平对齐,title仅设定高值不设定具体宽值,image设置固定宽高。
        
         聪明的人一下子就理解了,完全可以将右侧的两个空间就视为屏幕的右边距嘛。是的,就算不聪明,你也要固定的这么认为,因为,右边的两个空间都是大小固定,方位固定的,跟屏幕边距向左移有区别吗?此刻,我们不再设定title的长度了,完全可以删掉”<=“了,也就是说title是平原野马了,大小完全自如了。此时删除掉image距离title的右边距,增加title距离image左边距5点,image距离标签3的左边距增加5点,但是要修改参数,将5点的等于改成万恶的“<=”,此时,测试吧,这逼装的我给满分,但是我不要满分,因为刚才没装好,被扣分了。

     

     
    上图为更改设置image右边距值。
     
         解释一下,整局,最关键的就在于这个image身上,我本身是大小固定的,左面的title反过来追求我,我对于右侧的标签3距离可控,近了我就锁死,警告不能再近了,削弱追随者title,让他显示成”…",如果title小了,我就远离标签3 。听着咋这么像显示版的男友和老爹呢。title是男友,标签3是老爹,老爹的右边是老娘,image是花瓶美少女。我曹,我爆了!太像了。男友要求多了,女友回家跟老爹告状,男友就消停了,而老爹怎么也打不到女婿一下,因为丈母娘都是护着女婿的,男友老实了,也就离开老爹跟着男友回去过甜蜜小生活了。我说的是不是啊?
     
         扩展点吧,扩展点约束,约束的相对性非常有意思,要是不熟练约束的,跟熟练约束的根本没法看懂,根本看不懂那里是哪里。
         约束,可以是title、image、标签3和标签4同一水平线,那么我title上下动了,随之image、标签3和4也就跟着动了;
       

     

    上图为设定四个控件水平对齐,选中这几个控件,点下下面约束弹框,找到上面下部红色按钮起始点,选择最下头的。 
        
         中间水平线还可以设定上下偏移,好比我image想向上偏移3点,标签3想向下偏移3点,标签4不变。
        

     

    上图是设置偏移的前半步,还有下半步,也就是双击以后的事情了:
        

     


     

    看到箭头了吧,向上偏移3就-3喽,为什么-3呢,看下描述:First item(第一个控件) 是image,第二个是title,image的中间等于title的中间上移3个点,iOS屏幕坐标左上角是(0.0)别忘记,所以是-3。
     
         当然在水平角度讲,我们还可以设定他们四个控件的顶部是对齐的,或者底部是可以对齐的。好玩吧。
        

     

    上图,楼主很懒惰,直接把上左下右、水平垂直中间对齐和等宽等高全画出来了,是不是这样不太好。
     
         说标签3和标签4生活一辈子了,就大小一样吧,可以,我们设定成他们等高和等宽,这就免除了我们的分别设定,各个控件的宽高设定。(看上图,见谅!)
     
         说,这个页面还有下面的控件,而且下面还不止一排,那么我们就可以设定所有第一列的左边是对齐的,那么最上边的title变化了距离左边距的数值,相应的下面所有控件都将跟着移动距离左边的位置,是不是很方便?

     

        
         同样的,我下面的一个控件左边跟着title的左边对齐了,右边是不是也可以跟着最右边的标签4的右边对齐呢?肯定可以啊。
     
         我拖进来一个view,我想让这个view在整个屏幕的垂直中间或者水平中间显示,或者就在垂直且水平的中间显示,不用再代码里费劲计算了。

     

    上图就是设置居中问题的,两选项,上面是垂直,下面是水平。
     
         还有一种情况,我所有控件啊,都是在一个view里边的,然后为了方便,我view外边的控件也就索性跟着view里边的控件的左边或者右边对齐吧,也行,你只要在左边栏里按住commend键分别点击两个控件,就可以实现他们的操作,跟操作同属于view内的控件的约束是一样的。

     

    上图,耍的花招有点多,结合了偏移,我是设定第四排与title的左边对齐,但向右偏移100点。选中两个控件以后,就按照之前操作,左对齐了。
     
         我想想,看看还有没有其他应用可以扩展。
         我们介绍了”<=“的威力,又比较浅显的介绍了一下相互约束,对,还有一种,view中一个控件,我要相对view的中间对齐,我不管你view有多高,我就相对你此高度,在中间显示,两种中间都可以实现,水平和垂直方向都可以设置居中。

     

    上图,我设定的是水平和垂直都中间了。
     
    好了,我好想也就知道这么多的约束了,脑袋被掏空了。我也知道有点啰嗦了,就是想让大家看的时候不枯燥。

    转载于:https://www.cnblogs.com/guoqiangx-5/p/5594634.html

    展开全文
  • Xcode11--ScrollView添加xib约束

    千次阅读 2019-12-20 15:05:11
    按照以前的方法添加约束后报错 需要往scrollView添加一个ContainerView或者View,设置该View的约束(四边=0) 鼠标指到Content Layout Guide,按住右键拖到ContainerView,松手选中前两项就好 这里...

    按照以前的方法添加约束后报错 

     

    需要往scrollView添加一个ContainerView或者View,设置该View的约束(四边=0)

     

    鼠标指到Content Layout Guide,按住右键拖到ContainerView,松手选中前两项就好

    这里报错就消失了,用代码向ScrollView中添加一个label看看布局是否正确,以及约束是否生效

    import UIKit
    
    class ViewController: UIViewController {
    
        @IBOutlet weak var scrollView: UIScrollView!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let label = UILabel(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
            label.text = "test"
            label.backgroundColor = UIColor.red
    
            scrollView.addSubview(label)
        }
    }
    

     

     

    展开全文
  • 上一篇文章《iOS 12 Auto Layout界面自动布局系列1》简要介绍了iOS界面布局方式的前世今生。本篇文章将详细介绍如何使用自动布局实现不同... 通过系统原生的NSLayoutConstraint逐条添加约束 通过可视化格式语言VF...

    上一篇文章《iOS 12 Auto Layout界面自动布局系列1》简要介绍了iOS界面布局方式的前世今生。本篇文章将详细介绍如何使用自动布局实现不同屏幕尺寸的适配。

     

    添加自动布局约束(下文简称约束)有以下几种方式:

     

    • 使用Xcode的Interface Builder界面设计器添加并设置约束
    • 通过系统原生的NSLayoutConstraint逐条添加约束
    • 通过可视化格式语言VFL添加约束
    • 使用第三方类库(如Masonry)添加约束

     

    本系列文章将以一个简单的例子来演示如何使用这几种方式添加约束,如下图所示。程序的界面主要由三部分组成,最上面是一张苹果logo图片,下面是可以滚动的区域,包含公司名称和详细介绍。竖屏:

    横屏:

     

    打开Xcode(本文使用的版本为10.1),新建项目(快捷键⇧⌘N),选择iOS -> Application -> Single View App。项目可任意命名(如AutoLayoutXcode),语言选择Objective-C。

    点击Next完成项目创建。打开Main.storyboard,拖入一个Image View,一个Scroll View以及两个Label,并将两个Label作为ScrollView的子视图。为了便于识别,将Image View的名称改为Logo Image,两个Label的名称修改为Name Label与Description Label。

     

    要想正确定位Logo Image,我们需要添加4个约束,分别是:

    • Logo Image左侧与其父视图左侧对齐
    • Logo Image右侧与其父视图右侧对齐
    • Logo Image顶部与其父视图顶部对齐
    • Logo Image的高度为其父视图高度的一半

    于是选中Logo Image,点开设计器下方的Add New Constraints菜单,在弹出菜单上方取消勾选Constrain to margins(否则会有间距),并设置左侧、右侧与顶部的约束值均为0(注意要将工字型约束标记由虚线点亮为实线),最后点击弹出菜单下面的Add 3 Constraints按钮,这样就添加了上述三个对齐约束,如下图所示。

     

    在Xcode右侧的Size Inspector中可以查看当前选中界面元素的尺寸及所添加的约束。选中Logo Image并点击Size Inspector,可以在下图中红色圆角矩形区域内看到刚刚添加的三个约束,如下图所示。

    三条蓝线分别表示尾部、头部与顶部对齐约束。下面的列表也详细列出了这三条约束:

    • Align Trailing to: Safe Area表示所选视图与安全区域尾部对齐
    • Align Leading to: Safe Area表示所选视图与安全区域头部对齐
    • Align Top to: Safe Area表示所选视图与安全区域顶部对齐

    这里额外解释一下,安全区域是iOS 11引入的新概念,简单起见可暂且认为其等同于控制器的主视图(关于安全区域,可参考我的另一篇博客《关于iOS中的布局向导(Layout Guide)和安全区域(Safe Area)》)。“头部”与“尾部”针对当前系统的语言文字方向。绝大多数情况下,语言文字方向都是从左到右,因此“头部”等同于“左侧”,“尾部”等同于“右侧”。但是,某些语言文字方向为从右到左,例如阿拉伯语,则其“头部”对应“右侧”,“尾部”对应“左侧"。鼠标双击Align Trailing to: Safe Area约束会显示该约束的详细信息,如下图所示。

     

    回忆一下上一篇文章中关于约束的介绍,约束就是一个线性关系:

    y = m * x + c

    图中的First Item对应公式中的y,表示因变量,这里显示的是Safe Area.Trailing表示安全区域尾部。Relation对应公式中的=,表示相等关系,这里显示的是Equal即相等(这里为什么会有下拉菜单?点开你会发现,除了=之外,还可以设置为>=或者<=,我们以后再详细讲解)。Second Item对应公式中的x,表示自变量,这里显示的是Logo Image.Trailing表示Logo图片的尾部。Multiplier对应公示中的m,表示缩放比例系数,这里的值为1。Constant对应公示中的c,表示偏移常量,这里的值为0。所以完整串下来就很清楚地表达了安全区域尾部与图片尾部对齐这样一个线性关系。

    注意,建立约束的双方是对等的,既可以说y相对于x发生变化,亦可以说x相对于y发生变化,所以First Item与Second Item是可以互换的,即反函数:

    x = 1/m * y - c/m

    点击First Item或者Second Item下拉菜单,选择Reverse First And Second Item即可交换双方的位置。

    交换后的Multiplier与Constant会自动根据反函数公式计算得出。

    交换前后的效果是一样的。

    注意到左侧文档结构窗口(Document Outline)右上角出现了一个红色按钮,表示当前界面存在布局约束错误。

    点击该按钮,Xcode将列出错误和警告。错误为红色圆形按钮,警告为黄色三角按钮,点击后会弹出建议的解决方案。

    我们现在仅为Logo Image添加了3个约束,还缺少确定图片最下面位置的约束,即上图中所指出的缺少高度约束(Missing Constraints:Logo Image,Need constraints for: height)。这种由于缺少约束而导致的错误,被称作“二义性错误”(Ambiguity Error)。此时如果点击Add Missing Constraints按钮,Xcode会自行添加缺失的约束,但可能并非如我们所愿,甚至造成混乱。因此我们点击Cancel,自己添加约束。

    我们希望图片总能够占据上半部分屏幕,因此可以在图片与安全区域之间建立高度约束。在文档结构窗口中,鼠标单击选中Logo Image,按住Control键(或者按住鼠标右键)拖拽到Save Area上。

    松开鼠标,在弹出的菜单中选中Equal Height。

    保持Logo Image选中,在Size Inspector窗口中双击Equal Height to: Safe Area约束,修改Multiplier的值为0.5。

    现在Logo Image的4个约束就齐了。由于我们尚未向ScrollView和Label添加约束,所以Storyboard文件还是会报二义性错误,我们先暂时忽略这些错误。

    接着建立Scroll View的约束,它与安全区域头部、尾部、底部对齐,并且Logo Image与Scroll View的垂直间距为0。同理打开Add New Constraints菜单,取消勾选Constrain to margins,将4个方向的值设置为0(暂时先不点击Add 4 Constraints按钮),如下图所示:

     

    Xcode会采取就近原则自动选取因变量x,但这有可能并不是我们希望的。例如,我们希望Scroll View顶部和Logo Image底部对齐,于是点击下图中顶部约束的下拉菜单,会列出可供选择的自变量。这里会出现两种情况:

    • 一种可能是,菜单中列出了View、Safe Area和Logo Image,且默认选中了Logo Image,如下图。

    那么恭喜你,你可以直接点击Add 4 Constraints,Scroll View的4个约束就加好了。

    • 另一种可能是,菜单中只列出了View(控制器主视图)和Safe Area,并未列出Logo Image,如下图。

    此时无法添加想要的顶部对齐约束,那么先暂时点击顶部的红色工字型将其变为虚线(如下图红圈),然后点击Add 3 Constraints。

    菜单中未出现Logo Image的原因是Scroll View和Logo Image这两个视图重叠了(上图中双向箭头区域),两者间距为负值,所以Xcode的就近原则不适用于间距为负值的情况。解决办法是将Scroll View与Logo Image二者垂直间距变为正值,将Scroll View的顶部位于Logo Image底部的下方,即二者的垂直间距为正值,这时再点击Add New Constraints菜单添加顶部约束就可以了。

    现在Scroll View的约束添加完毕。接着我们为Name Label添加约束,将其头部、顶部与尾部与Scroll View的对应部分对齐,并限定其高度为20。除了使用Add New Constraints菜单添加约束外,还可以通过拖拽添加约束,我们就来试试这种方法。

    右键点击Name Label且不松开右键,拖拽到Scroll View并松开鼠标,弹出菜单。按住⇧并点击Leading Space to Container、Top Space to Container、Trailing Space to Container,按下enter键添加头部、顶部、尾部约束。

    右键点击Name Label并拖拽到自己身上,松开鼠标,在弹出的菜单中选择Height,添加高度约束。

     

    这种方式会以当前界面设计器中的位置尺寸来设置约束的常量值,如果需要可以再修改常量。选中Name Label,在Size Inspector中可以看到刚刚添加的4个约束的常量值都不正确。

    点击Trailing Space to: Superview右侧的Edit按钮,在弹出的窗口允许修改约束的m和c值。此处将Constant的值修改为0。

    同理,将Leading Space to: Superview和Top Space to: Superview的Constant值修改为0,将Height Equals:的Constant值修改为20即可。

    选中Name Label,在Attributes Inspector窗口中设置Label的Text属性为“苹果公司”,设置Background为绿色。

    同样为Description Label添加约束,将其头部、底部、尾部与Scroll View的对应部分对齐,并且顶部与Name Label的底部垂直间距为0。在Attributes Inspector窗口中设置Label的Text为:

    苹果公司(Apple Inc. )是美国的一家高科技公司。由史蒂夫·乔布斯、斯蒂夫·沃兹尼亚克和罗·韦恩(Ron Wayne)等三人于1976年4月1日创立,并命名为美国苹果电脑公司(Apple Computer Inc. ), 2007年1月9日更名为苹果公司,总部位于加利福尼亚州的库比蒂诺。
    苹果公司创立之初主要开发和销售的个人电脑,截至2014年致力于设计、开发和销售消费电子、计算机软件、在线服务和个人计算机。苹果的Apple II于1970年代助长了个人电脑革命,其后的Macintosh接力于1980年代持续发展。该公司硬件产品主要是Mac电脑系列、iPod媒体播放器、iPhone智能手机和iPad平板电脑;在线服务包括iCloud、iTunes Store和App Store;消费软件包括OS X和iOS操作系统、iTunes多媒体浏览器、Safari网络浏览器,还有iLife和iWork创意和生产力套件。苹果公司在高科技企业中以创新而闻名世界。
    苹果公司1980年12月12日公开招股上市,2012年创下6235亿美元的市值记录,截至2014年6月,苹果公司已经连续三年成为全球市值最大公司。苹果公司在2014年世界500强排行榜中排名第15名。2013年9月30日,在宏盟集团的“全球最佳品牌”报告中,苹果公司超过可口可乐成为世界最有价值品牌。2014年,苹果品牌超越谷歌(Google),成为世界最具价值品牌 。

    设置Lines的值为0,设置Background为黄色。

    Xcode 8.0添加了实时预览功能,可以在不启动模拟器/真机的情况下预览不同设备横竖屏的界面情况。注意到设计器下方的工具条:

    这里可以选择不同的设备(iPad、iPhone),以及选定屏幕方向(竖屏、横屏),设计器会根据不同的设置显示对应界面。

    除此之外,Xcode的Preview工具还支持同时预览不同屏幕大小的界面情况,方便进行对比。打开Assistant Editor,点击快速跳转下拉菜单:

    选择Preview -> Main.storyboard:

    在右侧预览窗口中就可以看到在不同设备上的效果。可以点击预览窗口左下角的+按钮,在弹出菜单中添加需要预览的设备。

    现在我们添加Logo Image的图片。下载苹果Logo图片apple.jpg,并将其拖入项目中。文件下载地址:https://pan.baidu.com/s/1b5AqDo 密码: e4ff

    选中Logo Image,在属性窗口(Attributes Inspector)的Image View中,将Image设置为apple.jpg,将Content Mode设置为Aspect Fit,这样就能根据Image View的大小来调整图片的缩放方式。

    现在不妨在模拟器中实际运行一下程序,发现Scroll View变成了横向滚动而非纵向滚动,这并不是我们想要的效果。

     

    可是我们已经把每个视图的4个必要约束都添加了,怎么还会出现这样的问题呢?

    是这样的,当使用自动布局为Scroll View添加约束时,除了需要确定ScrollView本身的位置尺寸之外,还需要明确ScrollView的ContentSize大小。对于上述例子,Scroll View本身会占用下半部分屏幕,但是其ContentSize的大小是不确定的,所以会出现异常滚动效果。因此我们还需要为两个Label确定宽高,这样才能计算出ContentSize。按住⌘键,在文档结构窗口中选中Logo Image、Name Label与Description Label,点击Pin按钮,在弹出的窗口中选中Equal Width,这样就使得两个Label的宽度总与Image View的宽度相等,即Scroll View的ContentSize的宽度总是和Scroll View本身的宽度相同,因此就不会出现横向滚动的情况了。

    再次运行,现在只能纵向滚动了。

    程序最终项目文件链接:https://github.com/puckerxp/AutoLayoutSeries,在AutoLayoutXcode目录下。

    通过这个例子我们不难发现,其实自动布局的概念并不难,而且它能够很好地解决多设备界面适配与屏幕旋转处理等工作。而且在这几种添加约束的方式当中,使用Xcode的Interface Builder来可视化地创建约束,以及使用预览工具来实时调整约束,这种方式是最简单直观而且最常用的方式。

    在本系列后续文章中,将会介绍如何通过代码创建NSLayoutConstraint对象,以及如何使用VFL语言来添加约束。

    如果你对我写的东西有任何建议、意见或者疑问,请到我的博客留言:

    Puzhi的CSDN博客

     

    展开全文
  • 上一篇文章《iOS 8界面自动布局系列-1》简要介绍了iOS界面布局方式的前世今生...通过代码逐条添加约束 通过可视化格式语言VFL添加约束 本文将以一个简单的例子来演示如何使用这几种方式添加约束,如下图所示。程序的
  • Today we will look into iOS AutoLayout in Xcode. We’ll implement and use AutoLayout and Constraint in our storyboards. These components are vital in keeping the storyboards designs consistent across ...
  • Xcode中的约束用法

    2019-10-06 15:13:59
    这篇文章用几个简单的例子来介绍XCode6.1故事板中约束的使用方法。 现在iOS设备屏幕的尺寸也有很多种了,尤其是有了iPhone6 Plus以后,再不关注界面的尺寸适配就有点说不过去了。 说一个很简单的要求,把一个...
  • 在storyboard中需要设置按钮三等分屏幕宽度的步骤如下: 1.首先我们需要先拖拽三个button到...首先添加cyan按钮的约束,先选中cyan按钮,然后添加如下的约束,距左10、距下200、高度30: 3.添加完cyan
  • 上一篇文章《iOS 8界面自动布局系列-1》简要介绍了iOS界面布局...使用Xcode的Interface Builder界面设计器添加并设置约束通过代码逐条添加约束通过可视化格式语言VFL添加约束 本文将以一个简单的例子来演示如何
  • iOS 12 Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束-附件资源
  • xcode9元素约束设置

    2017-11-28 22:49:43
    iOS设备左右横屏时可能导致界面元素显示出错,所以要设置元素与界面边界的距离即约束。 方法: 在storyboard右下角中,使用Align,设置元素在以界面中心为原点(0,0)的坐标,先将元素移动到想要的位置,再在Align中...
  • 查看Xcode右侧Layout是不是选择的Automatic 如果不是的花,切换到Automatic就可以了
  • 上一篇文章《iOS8界面自动布局系列-1》简要介绍了iOS界面布局方式的前世今生。本篇文章将详细介绍如何...添加自动布局约束(下文简称约束)有以下三种方式: 使用Xcode的Interface Builder界面设计器添加并设...
  • 上一篇文章《iOS 8界面自动布局系列-1》简要介绍了iOS界面布局方式的前世今生。本篇文章将详细介绍如何使用自动布局实现不同屏幕尺寸的适配。...通过可视化格式语言VFL添加约束 本文将以一个简单的例子来演示...
  • 问题重述: 为collectionview设计了一个hearderView,而这个...在Xcode 6和iOS 8的组合下运行,上述的subview完全没有按照原来设计的约束,而是以从(0,0)为原点自己重置layout。但在iOS7 + Xcode 5/6 和iOS8
  • Width:对视图宽度的约束 Height:对视图高度的约束 Horizontal Spacing:对视图间水平距离的约束 Vertical Spacing:对视图间垂直距离的约束 Leading Space to Superview:与父视图左边界的约束 Trailing Space to ...
  • 最近Xcode更新到10版本,创建了一个xib, 对控件添加约束的时候,右下方操作按钮入口不见了,不知道为什么苹果自动给取消了,如下两个截图,可以帮助你解决问题。 原始状态: 勾选后 操作入口即可显示: 希望...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,472
精华内容 2,188
关键字:

xcode添加约束