首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

IOS开发系列——Masonry手写Autolayout专题【整理,部分原创】

Masonry介绍与使用实践:快速上手Autolayout http://www.cocoachina.com/ios/20141219/10702.html 1 Masonry开发技巧 1.1..., 300)); }]; 这里有两个问题要分解一下 首先在Masonry中能够添加autolayout约束有三个函数 - (NSArray *)mas_makeConstraints:(void(^)...mas_remakeConstraints 则会清除之前的所有约束 仅保留最新的约束 三种函数善加利用 就可以应对各种情况了 */ 其次 equalTo和 mas_equalTo的区别在哪里呢?...padding1); make.height.mas_equalTo(@150); make.width.equalTo(sv2); }]; 代码效果 这里我们在两个子view之间互相设置约束可以看到他们的宽度约束下自动的被计算出来了...1.3.4 使用dispatch_get_main_queue保证布局与后续处理的同步 虽然mas_updateConstraints的block回是顺序执行的,但是布局真正起作用还是放在了main_queue

73010

IOS开发基础系列】Autolayout自动布局专题

Note:你可能会奇怪,为什么Xcode不为X轴方向自动增加一个约束。Xcode中的规则是:Xcode只为那些你没有设置任何约束的对象创建自动约束。...一旦你增加一个约束,你便是告诉Xcode你接管了这个视图。Xcode将不再增加任何自动约束,并希望你为这个视图增加需要的约束。...2 代码实现自动布局 2.1 使用方法 2.1.1 添加约束的方法         代码中一般用到的有两个添加约束的方式:     1. - (void) addConstraint: (NSLayoutConstraint...NS_AVAILABLE_IOS(6_0);         在使用自动布局之前要对子视图的布局方式进行调整,用到这个UIView的属性。.../article/details/41844071 使用了Autolayout和约束后,无法用代码修改View的位置,怎么处理?

27940
您找到你想要的搜索结果了吗?
是的
没有找到

Autolayout

Autolayout Autolayout是一种“自动布局”技术,专门用来布局UI界面的 Autolayout自iOS6开始引入,由于Xcode4的不给力,当时并没有得到很大推广自iOS7(Xcode5...控件的frame不匹配所添加的约束, 比如 比如约束控件的宽度为100, 而控件现在的宽度是110 错误  ?...缺乏必要的约束, 比如 只约束宽度和高度, 没有约束具体的位置 两个约束冲突, 比如 1个约束控件的宽度为100, 1个约束控件的宽度为110 代码实现Autolayout 代码实现Autolayout...有Autolayout之后,UILabel的bounds默认会自动包住所有的文字内容,顶部和底部不再会有空缺区域 ?...UILabel实现包裹内容 设置宽度约束为 <= 固定值 设置位置约束 不用去设置高度约束 基于Autolayout的动画 在修改了约束之后,只要执行下面代码,就能做动画效果 [UIView animateWithDuration

91060

iOS下的界面布局利器-MyLayout布局框架

其内核是基于对UIView的layoutSubviews方法的重载以及对子视图的bounds和center属性的设置而实现的。...视图A的左边距占用父视图宽度的20%,而右边距则占用父视图宽度的30%,高度则等于自身的宽度。 视图B的左边距是40,宽度则占用父视图的剩余宽度,高度是40。...UIView中扩展出了widthSize,heightSize这两个变量来实现视图的宽度和高度尺寸的设置。您可以用其中的equalTo方法来设置视图的宽度和高度。...相对布局是一种里面的子视图通过相互之间的约束和依赖来进行布局和定位的布局视图。相对布局里面的子视图的布局位置和添加的顺序无关,而是通过设置子视图的相对依赖关系来进行定位和布局的。...您需要提供一个实现曲线路径的函数、一个特定的坐标体系、一种特定的子视图在曲线上的距离设置这三个要素来实现界面布局。当曲线路径形成后,子视图将按相等的距离依次环绕着曲线进行布局。

1.9K30

iOS开发-屏幕适配三种技术(Autoresizing,AutoLayout,SizeClass)

只需要设置lable的宽度和距离父控件的左边,顶部,就可以自动包裹内容。...但是如果改变文字后,让Lable的宽度包裹 ? Paste_Image.png Less than or equal :让它的宽度小于等于设置宽度,也就是根据lable的内容自动拉伸 ?...建议:忘掉Frame,使用Autolayout 引出一点:相同级别的控件他们的约束在父控件去找 1、黄色的View与橘黄色View之间的关系,应该在ViewController中的View中 ?...Paste_Image.png 4、在touchBegin中设置: self.spacingContraint.constant = 50; 修改完约束后,可以执行一个动画,让他看起来好看 [UIView...2、不再有横竖屏概念,只有屏幕尺寸的概念 3、不再有具体尺寸的区别,只有抽象尺寸的概念 4、把宽度和高度分为三种情况 1.compact:(紧凑(小)) ?

5.2K10

iOS界面布局的核心以及TangramKit介绍

iOS中我们可以通过UIView的bounds属性来完成视图的尺寸设置,而通过center属性来完成视图的位置设置。为了进行简单的操作,系统提供了frame这个属性来简化对尺寸和位置的设置。...因此相对布局里面的所有子视图都要设置位置和尺寸的约束和依赖关系。相对布局和iOS的AutoLayout以及Android中的相对布局RelativeLayout提供一样的功能。...如果把布局视图的layoutSubviews比作一个数学函数的话,那么我们就能得到如下的方程式: UIView.center = TGXXXLayout.layoutSubviews(UIView.tg_left...而且我们在编程时也不再需要通过设置视图的frame来实现布局了,即使设置也可能会失效。...因此我们可以通过对min和max方法的使用来解决上述的问题: //A的宽度等于B的宽度,最小为20,最大为父视图宽度的一半。

2.1K30

iOS学习——UIView的研究

) ,主要提供两个类方法进行关键帧动画的设定,也是直接采用block的方式实现 视图上手势相关的扩展 UIView (UIViewGestureRecognizers)  ,主要提供添加、移除和手势开始前回...(6_0); 485 /** 为视图更新约束,可以重写这个方法来设置当前view局部的布局约束 */ 486 - (void)updateConstraints NS_AVAILABLE_IOS(6_0...489 /** 设置视图的约束需要更新,调用这个方法,系统会调用updateConstraints去更新布局 */ 490 - (void)setNeedsUpdateConstraints NS_AVAILABLE_IOS..._0); 498 499 /** 是否使用约束布局 */ 500 #if UIKIT_DEFINE_AS_PROPERTIES 501 @property(class, nonatomic, readonly...(9_0); 592 /** 布局视图的宽度 */ 593 @property(readonly, strong) NSLayoutDimension *widthAnchor NS_AVAILABLE_IOS

2.7K80

iOS9新特性——堆叠视图UIStackView

iOS9新特性——堆叠视图UIStackView 一、引言         随着autolayout的推广开来,更多的app开始使用自动布局的方式来构建自己的UI系统,autolayout配合storyBoard...我们向其中拖入任意数量的view,设置不同的颜色,就实现了我们想要的效果,并且可以随意动态删除和添加其中的view数量,不需要改变约束。...我们的布局没有问题,并且可以动态的改变其中view的个数,使用如下方法添加一个view:     UIView * newView = [[UIView alloc]init];     newView.backgroundColor...技巧:因为StackView继承于UIView,因此在布局改变的时候,我们可以使用UIView层的动画,如下:         //在添加view的时候会有动画效果,移除的时候没有         [stackView...(9_0); 在上面的例子中,我们设置了对其方式为充满,这样的话,我们就不需要再做过多控件尺寸的约束,如果我们被管理的控件高度或者宽度不一,我们可以设置中心对其,这样的话,我们还需要为每个控件添加一个宽度或者高度的约束

1.8K10

如何把设计图自动转换为iOS代码? 在线等,挺急的!

这是一个可以节省 70% 工作量的话题 我觉得,如果真的能把一张设计图自动转换为代码,任何开发工程师都会感兴趣的.单以 iOS用为例, 在一个最常用的MVC架构的APP中,主要的代码,无非就是集中于...尽管作为一名iOS开发人员,我依然对苹果公司提供的开发技术及其发展方向持谨慎和保守态度.前一段时间,尝试使用 Xib来布局视图,遇到一些坑,但是熟悉之后,也确实比原来单纯基于绝对位置的纯代码布局更灵活些...在不考虑多屏幕兼容的情况下, AutoLayout,可以直接使用固定的约束常量值来确定,但是 马上iPhone 7 都要出来了,指不定什么尺寸呢? 一个机型,一个UI代码?是不是想想都让人头大!...constant,而是使用比例来指定约束.选取的是 width,height,right,bottom,而不是其他属性,其巧妙之处,大家试用下其他属性就知道了....因为我们是基于比例来添加约束,不同屏幕下,会自动等比变换.

1.3K60

深入详解iOS适配技术

1.2.2.代码中使用Autoresizing 我们不仅可以在storyboard中使用Autoresizing来约束父子视图,也可以使用代码来设置父子视图之间的位置关系。...值得注意的是:autoresizingMask的枚举值是使用位移的形式给出的,这样设置的好处在于,当我们使用代码给某个视图设置autoresizingMask属性时,我们可以给autoresizingMask...比如,给storyBoard中的某个子控件A设置宽度和高度、距离父控件上下左右之间的间距,就相当于给这个控件添加了6个约束,也就产生了6个约束对象。...红色: 距离顶部有20 == 相当于设置了Y 距离左边有20 == 相当于设置了x 设置宽度等于100 设置高度等于100 4.约束警告 如果看到Storyboard中有黄色的箭头,...如果我们通过约束给定了UILabel的width = 100,但是内容仍然少的可怜,不能包裹,可以把宽度设置为<=100,此时,label的宽高都能包裹住内容。高度的设置同理可证。

8.4K70

MyLayout&TangramKit 的重大升级!

当一个视图有自己的固有内容尺寸时,就不需要再为视图设置宽度或者高度约束。这也就是为什么一般情况下不对UILabel视图设置宽度和高度约束时系统也能正常完成布局。...//本文对AutoLayout进行约束设置都是用iOS9以后所提供的进行约束设置的简易方法。...因此如果想使用布局视图的尺寸自适应功能,那么在将布局视图的尺寸设置为wrap后,就可以像使用UILabel那样不用去设置布局视图的宽度约束和高度约束了。比如有两个兄弟视图A,B。...,这里不需要设置高度约束,因为使用了布局视图的高度自适应属性。...,然后将布局视图添加到其他视图中去,不需要再为布局视图设置宽度和高度约束了,也不再限制只能将布局视图添加到contentView中了,也不再需要重载特定的方法了,就相当于将一个布局视图当做UILabel

2K20

iOS开发之扫描二维码

AVCaptureVideoPreviewLayer:相机拍摄预览图层,是CALayer的子类,使用该对象可以实时查看拍照或视频录制效果,设置好尺寸后需要添加到父view的layer中。...(宽度一致) */ @property (weak, nonatomic) IBOutlet NSLayoutConstraint *scanViewH; /** * 扫描线的顶部约束值 */...扫描二维码.gif 总结 一、遇到的坑 1、设置了AutoLayout,想要做动画,这时候动画放在viewDidAppear中执行,并且不要用bounds,frame来改变动画,要用具体的约束,但是直接在...UIView动画中修改约束是没效果的,需要在设置约束以后,加上[self.view layoutIfNeeded];。...二、参考文献 1、iOS开发系列--音频播放、录音、视频播放、拍照、视频录制 2、iOS开发 - 二维码的扫描 3、iOS二维码扫描与生成(优化启动卡顿) 三、源代码

1.9K40

谈谈 Autolayout

AutoLayout 关于 update 的几个方法 UIView 是我们经常使用的一个基本控件,其中有几个基本的布局方法需要清楚。...这个方法很开销很大,因为它会在每个子视图上起作用并且调用它们相应的 layoutSubviews 方法。注意:最好不要在代码中手动调用 layoutSubviews 方法。...通常在 updateConstraints 方法中实现必须要更新的约束,在设置或者解除约束、更改约束的优先级或者常量值,或者从视图层级中移除一个视图时都会设置一个内部的标记 update constarints...这个时候,设置约束的视图 frame 就不再是 (0,0,0,0) 了。...,写完约束设置 frame,而不是想把 frame 的设置放到 layoutSubview 中,比如设置约束后马上就想根据约束的结果计算高度,那么必须在设置约束之后手动调用 setNeedsLayout

67420

深入剖析Auto Layout,分析iOS各版本新增特性

+ 10.0 //红色按钮的左侧距离黄色label有10个point 使用API添加约束 使用NSLayoutConstraint类(最低支持iOS6)添加约束。...*view1 = [[UIView alloc] init]; UIView *view2 = [[UIView alloc] init]; viewsDictionary = NSDictionaryOfVariableBindings...]-[view2]-[view3(>=20)]-| 表示按照水平排列,|表示父视图,各个视图之间按照默认宽度来排列 VFL介绍 无论使用哪种方法创建约束都是NSLayoutConstraint类的成员,...删除视图时直接使用removeConstraint和removeConstraints时需要注意这样删除是没法删除视图不支持的约束导致view中还包含着那个约束使用第三方库时需要特别注意下)。...实践中碰到的非必现低配置机器崩溃bug分析 案例一 一个视图缺少高宽约束,在设置完了约束后执行layoutIfNeeded,然后设置宽高,这种情况在低配机器上可能会出现崩问题。

1.2K10

开源UI界面布局框架MyLayout1.9发布

MyLayout并没有操作系统版本上的使用限制,理论上它最低甚至可以支持到iOS5.0。...MyLayoutPos中的clone方法就是专门为最值约束使用的,主要为了解决那些获取最值时希望在某个位置的偏移的场景。 目前只有相对布局下的子视图才支持位置最值约束设置,其他布局下的子视图不支持。...最值尺寸约束设置,可以应用在所有布局下的视图中以及布局本身。但是在使用最值约束时,要求数组内的元素的尺寸约束计算必须要在当前视图的尺寸约束计算之前完成,否则得到的结果将未可知。...函数返回的是此行以及行内的停靠对齐方式,如果返回MyGravity_None则表示使用布局默认的gravity和arrangedGravity停靠对齐属性。...因此新版本中不再建议使用wrapContentWidth和wrapContentHeight以及wrapContentSize来设置尺寸自适应了,而是建议使用新的设置方式。

1.7K10
领券