StoryBoard下ScrollView如何添加约束

在做项目的事后有一个注册页面,为了适配屏幕采用了StoryBoard,添加约束以后运行后发现一个问题。  在4.0 甚至更大的屏幕下是没有问题的,如下图(4.0屏幕)

但是放到更小的3.5英寸就会出现问题,发现下面的按钮不见了,主要原因是输入框太多,导致更个屏幕放不下更多。如图(3.5)英寸

想了下就决定用ScrolleView, ContentSize可以设置为560. 这样在其他屏幕上没有太多的影响,在3.5的屏幕下也可以滑动了。但是在StoryBord拖过ScrollView,添加约束的时候发现他并不会按照你猜想的去执行。经过查阅资料,大致知道了原因。这是由于scrollview本身contentSize、contentInsets等复杂的特性导致,苹果文档在讲autolayout的时候甚至专门拿出一节讲如何对scrollview进行自动布局。解决方案可以给ScrollView添加一个唯一的子视图,大小和ScrollView一样,然后所有原计划添加到ScrollView上面的控件,都添加在子视图上面。步骤如下:1.首先在我们的Controller自带的View里面添加一个ScrollView,点开下面设置约束的4个按钮的第2个,约束设置距离父试图的距离为(0,0,0,0)如下图所示。

2.在ScrollView上面添加一个View成为ScrollView的子视图,点开下面设置约束的4个按钮的第2个,设置约束距离ScrollView的距离为(0.0.0.0)如下图所示。

3.这个时候会发现报错了,不用紧张~,  先不用管它,咱们继续往下走

4.点开下面设置约束的4个按钮的第一个,选择 Horizontal Center in Container, 并打上对勾, (如果想要左右滑动就选择 Vertical Center in Container, 同时实现左右上下则全不选)

5.再次打开下面设置约束的4个按钮的第2个 选择Height 设置你想要的560.  (如果想要左右滑动就选择 Width, 同时实现左右上下就全部设置)(这个高度是以后运行后Scroller的ContentSize)

6.设置完成以后发现错误不见了,只有一个黄色的警告,这是由于Frame没有更新导致的,我们来更新下Frame。

7.接下来我们就可以在这个ScrollView的子视图View上面来添加控件了。 设置约束的时候是相对于父试图View的哦~。布局。

8.运行程序,发现在3.5屏幕已经可以滑动了, 而在4.0屏幕还是和原来一样 图:左3.5,  右4.0

附:上面的View是设置的固定的一个值。 如果想要动态的设置,就需要把我们刚才加的高度的约束设置成属性

起一个名字, height; 然后重写 -(void)updateViewConstraints 方法,在调用super 后 动态的设置height这个约束的constant属性。

这样你会发现ScrollView可滑动的幅度会在每次运行后都不一样哦~;

时间: 2024-10-03 22:40:36

StoryBoard下ScrollView如何添加约束的相关文章

Storyboard中使用UIscrollView添加约束的开发总结

第一次在项目中用storyboard做界面,一般的界面直接添加约束非常爽快 然后有个界面有scrollview,添加了约束还总是出错 刚开始使用了 wCompact,hRegular,滑动出现问题,有些界面滑动不了或者可以左右滑动 已经在viewDidLoad里面添加了scrollView的contentsize 约束什么的都没有问题,百思不得其解 后来上网查了一下资料 还是scrollView的contentsize的问题 scrollView的contentsize只能在viewDidApp

Storyboard学习手记(二)——添加约束

控件布局 xcode的自动布局让iOS开发更加便利,但是也存在许多的弊端,跟纯代码比起来省去了许多计算坐标以及繁复的语句,但是有些人认为自动布局不如代码灵活,总是能听到有人说这个用代码做可以实现,用自动布局实现不了,或许是可以实现的,只是对这个了解不深,当然我也只能在这里写些基础的东西. 现在xcode默认使用自动布局,因此直接把控件拖进controller,再将其约束起来就可以了,这里要说的就是如何按照不同的需求去约束. 这里不能像web那样一个个div块整整齐齐的分出来,而是要用尽量少的控件

storyBoard方式ScrollView的AutoLayout

在使用storyboard和xib时,我们经常要用到ScrollView,还有自动 布局AutoLayout,但是ScrollView和AutoLayout 结合使用,相对来说有点复杂.根据实践,我说一下我的理解,在故事板或xib中,ScrollView是根据其下面的一个View的大小来确定 ContentSize的大小. 看一下效果 1. 创建一个项目,拖拽一个ScrollView到故事板中,如下图 2. 选中ScrollView,添加约束. 3. 拖拽一个View到ScrollView上,

ios快速添加约束(storyboard中)

这篇文章是告诉新手如何快速的在storyboard中添加约束: 我们在storyboard中有一些按钮,可以添加约束. 但是最直观.最方便.最快捷的添加约束的方法,在我看来就是使用ctl键: 选中控件,按下ctl,将其拖动到约束的另外一个对象-可能是自己,可能是父视图,可能是兄弟视图. .弹出的框里我们就可以选择我们需要添加的约束,1次添加1个,不多也不少. 快来试试吧,拥抱autolayout!

iOS 用xib给scrollView添加约束

之前习惯了使用纯代码布局,最近使用xib给scrollView添加约束时遇到了一些问题,查阅资料后总结一下. 1.在xib中添加一个滚动视图UIScrollView,上下左右约束都为0 2.在滚动视图上添加一个UIView,如果是水平方向滚动,设置UIView垂直居中.如果是竖直方向滚动,设置UIView水平居中.如果水平方向和竖直方向都需要滚动则不需要设置.设置UIView上下左右约束都为0. 3.如果是水平方向滚动,设置UIView的宽度.如果是竖直方向滚动,设置UIView的高度.如果水平

uiscrollView UINavigation和uitabbar添加约束的问题

首先是层次问题, 我的storyboard中 底层是一个View(viewcontroller自带)上面添加了一个UIScrollview(添加约束, 上下左右全为0), 在UIScrollview上添加一个UITableView(添加约束: 上下左右全为0, 宽高分别为当前值, 做拖出宽高的约束, 添加到代码中, 设置可以改变他们的值) ①. 只有UIScrollview的情况, 这时只要把上面约束的宽高分别设下, 分别是[UIScreen mainScreen].bounds.size.wi

使用StoryBoard设置Scrollview的横向滚动不用一行代码哦!!!

1).创建一个空工程Single类型的工程,然后打开故事版(StoryBoard)在ViewController上添加scrollview 2).然后对scrollview添加约束,上下左右全部都是0就可以(注意:在添加上下左右约束的时候一定要取消Constrain to margins ,否则添加完的约束会出现左右各缺少20像素的边距) 3).添加完成约束后直接更新scrollview的frame.随后在scrollview上添加一个view并且添加约束上下左右也都是0. 4).在添加完成约束

xib添加约束

一.添加xib 1.当控制器已经创建下单独创建xib(为控制器单独创建xib) 1.单独创建xib,名字要和控制器名字一样. 2.设置xib的控制器类为当前控制器. 3.给当前控制器view拖线为当前xib. 4.如下图: 二.设置约束 1.label 1.label添加约束可以只设置x,y就可以定位label. 2.在xib或storyBoard中换行的快捷键option+回车.

纯代码添加约束,autolayout 适配

IOS AutoLayout 代码约束—VFL 2014-12-22 22:19:43http://my.oschina.net/carson6931-Carson6931-点击数:2148 IOS 提供了两种添加约束的方法 第一种: +(instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2