使用 autolayout 在scrolleView中进行布局

相信有很多人因为iPhone6出来后 ,因为适配而选择开始使用autolayout。现在正在被虐中。。。    今天要做一个在scrollView上面 可以滚动的效果  平时用代码写 感觉很快  , 被autolyout 坑死了 。  弄了好久才知道为什么 scrollView 不能滚动。

  话不多说  首先创建一个新的工程 。然后往view 上面加载一个scrollView 并加好约束 。 这里是让他铺满整个屏幕。没什么技巧 。

然后 ,我就想是不是设置下 contentSize  就行了  。结果发现我天真了  打开了autol ayout后真没找到可以设置contentSize的地方 ,后来查了下才知道好像是说

如果把自动布局打开,在storyboard中系统会默认根据你添加的subview自动生成同样大小的contentsize

对了  这就是我们接下来要做的事  既然是根据subView 那么 我再加个View上去 不就可以了吗? 说加就加  开始 然后铺满整个屏幕

这个时候就会出现这么两个警告

这两个警告是说 在宽度上 和高度上  你让不让我左右 或者 上下 滚动你表达的很模糊  它不清楚

其实我想说 我也不清楚究竟怎么样你才能滚动 。所以 ,我决定先不管他  。直接运行 ,要是就可以呢?那我不是白担心了 。

结果果然不出我所料啊  怎么拉都不会滚。

于是  我惊喜的发现但我把最后加上去的View的高和宽都固定后 没有警告了 。突然发现我运气太好了 ,结果就是 都滑成这样了 ,就是不滚动。

所以这个时候就没得弄了  ,然后想想可能是哪里出了问题  ,很显然我不能把他的 宽和高 定死 ,因为这个时候没了警告,说明Xcode很清楚我不需要滚动。这个时候我更茫然了 ,然后 再看这句话

如果把自动布局打开,在storyboard中系统会默认根据你添加的subview自动生成同样大小的contentsize

哦 对了 subView 的大小应该要超过scrollView 这样才能滚动 这个用代码也是这么用的

好 那我就把view的大小设置成PING屏幕的两倍好了 。

这时候发现由于View 的高度太高 storyboard 显示不下 成了这个样子 。 这时有部分人运行已经可以滑动了。 但是还有运气不好仍然不可以滑动,不要心急。我们接着来。到底是什么在作怪。  其实 ,可能就是你的约束没加对 ,这个时候检查下约束,要让scrollView和View 的顶部 和底部都有约束 并且一定要让scrollView包含view 对的你没有听错  view 是比ScrollView大很多 。但是正是这样,才符合 scrollview的内容比他本身大 ,所以这个时候你就可以滚动了。 其实想通了还是不难的 。

好了 。接下来还有更重要的 。上面那么个样子 你怎么往上面加视图呢? 我是这样处理的 点击  storyboard 设置size  变为Freeform

然后 再把storyboard的宽度和高度重新设置  320  和 568*2  就变成这个样子了

是不是很长了  ,为了证明可以直接往上面加约束 ,所以加点东西上去  直观点

好  弄完 收工  。

至于怎么拉约束线我就没有详细写  有很多博客都有介绍。 下次再写个关于 约束实现简单动画的博客 。可以给初学者借鉴下。证明大家都被虐过。

时间: 2024-12-20 12:14:13

使用 autolayout 在scrolleView中进行布局的相关文章

组件在容器中的布局

1,FlowLayout管理器 流式布局管理器,组件按照从左到右的流式顺序布局,JPanel组件中的默认布局管理器. 2,BorderLayout管理器 边框布局管理器,将容器分为东西南北中五个区域,每个区域只能添加一个组件,该组件的大小由其所在的区域决定.它是JFrame中的默认布局管理器. 3,GridLayout管理器 网格布局管理器,将容器分为行列的网格. 4,BoxLayout管理器 盒式布局管理器,组件安装垂直或者水平方式显示. 组件在容器中的布局,码迷,mamicode.com

无废话Android之常见adb指令、电话拨号器、点击事件的4种写法、短信发送器、Android 中各种布局(1)

1.Android是什么 手机设备的软件栈,包括一个完整的操作系统.中间件.关键的应用程序,底层是linux内核,安全管理.内存管理.进程管理.电源管理.硬件驱动 2.Dalvik VM 和 JVM 的比较 3.常见adb指令 platform-tools/adb.exe adb.exe : android debug bridge android调试桥 adb devices:列出所以连接的设备 adb kill-server :杀死adb调试桥 adb start-server :启动adb

Java中用户界面布局

绝对布局Absolute 通过放大或缩小界面的时候,组件大小和位置不会发生变化 浮动布局FlowLayout 调整应用程序窗口的大小时,组件将立刻重新排列 边界布局Border Layout 该位置有5个方位:东.南.西.北.中 网格布局Grid Layout 如需要将大量组件按规律排列,那么网格布局是最合适的,比如计算器界面的制作. CardLayout     卡片布局和其他布局不同,因为它隐藏了一些组件.卡片布局就是一组容器或者组件,它们一次仅仅显是一个,组中的每个容器称为卡片.   分组

android中九宫格布局与gridview

纵观现在的应用程序,九宫格是非常常见的一种布局方式.很多优秀的手机应用程序都采用了这一布局.下面就android中九宫格布局方式的实现和大家做一个简单的介绍. 首先在youxi.xml的布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" androi

关于NopCommerce-Web层中的布局页

以下内容大部分都不是原创,因为各位写手都是抄来抄去,所以我也不知道原创是谁,写这些只是为了方便自己的学习. 首先,Nop.Web也是一个MVC Web应用程序项目,一个公有区域的展示层.它就是你实际能够运行的应用程序.它是应用程序的启动项目. 一 概况 nopcommerce其布局页文件分布在Nop.Web/Views/shared当中,主要涉及到五个布局文件:_Root.Head.cshtml._Root.cshtml._ColumnsOne.cshtml._ColumnsTwo.cshtml

【HTML5&amp;CSS3进阶学习02】Header的实现&#183;CSS中的布局

前言 我们在手机上布局一般是这个样子的: 其中头部对整个mobile的设计至关重要,而且坑也很多: ① 一般来说整个header是以fixed布局,fixed这个产物在移动端来说本身坑就非常多 ② 在Hybrid应用中,Header很多时候扮演了不一样的角色,首先要完成以webview(window)为容器的功能,又要调用native提供的接口 Hybrid中Header的实现往往是一个难点,主要原因是同一套接口,要保证H5站点与native处于不一样的环境调用相同的接口,完成不同的功能 ③ 若

WPF中Grid布局

WPF中Grid布局XMAl与后台更改,最普通的登录界面为例. <Grid Width="200" Height="100" > <!--定义了两列--> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="100*"/> </Grid.Column

android 在代码中设置布局居中layout_gravity,layout_margin的方法

在代码中设置布局居中,翻看api可以知道view中有setGravity,setPadding,但是没有直接的setLayoutGravity,setMargin等方法.下面将在代码中实现类似布局中layout_gravity,layout_margin的方法. 可以通过设置view里面的 LayoutParams 设置,而这个LayoutParams是根据该view在不同的GroupView而不同的. 1.代码中设置layout_gravity LinearLayout layoutTop=(

DIV+CSS中让布局居中_背景图片居中_文字内容居中

DIV+CSS中让布局居中_背景图片居中_文字内容居中