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

iOS学习——UIView的研究

),主要定义对子视图的增删改以及层次结构调整等操作 视图外观渲染相关的扩展 UIView (UIViewRendering),主要定义视图的一些属性和设置,例如是否隐藏、透明度、背景颜色等 视图动画相关的扩展...) ,主要提供添加单个/多个、移除单个/多个约束的方法 视图上约束相关的扩展 UIView (UIConstraintBasedLayoutCoreMethods),主要提供4种约束更新的方法 视图上约束共存相关的扩展...)fromCurrentState; 372 373 /** 在动画块中为视图设置过渡动画 */ 374 + (void)setAnimationTransition:(UIViewAnimationTransition...的关键帧动画 */ 422 @interface UIView (UIViewKeyframeAnimations) 423 424 /** 创建一个动画块对象,可用于为当前视图设置基于关键帧的动画...(6_0); 485 /** 为视图更新约束,可以重写这个方法来设置当前view局部的布局约束 */ 486 - (void)updateConstraints NS_AVAILABLE_IOS(6_0

2.8K80

关于Autolayout和Masonry自动布局的几个坑

自动布局 02 Mar 2016 Comments 前言 最近遇到一个复杂视图:根控制器里面有上下两个子控制器,子控制器中各自实现类似PageView的视图,然后PageView的每一页是一个WebView...:重置之前的约束 注意 先添加子视图,才能对子试图添加约束 如果想使用动画效果,需要如下代码: //重写updateViewConstraints方法,进行约束的更新- (void)updateViewConstraints...the change[self updateConstraintsIfNeeded];// 执行动画效果, 设置动画时间[UIView animateWithDuration:0.2 animations...主要注意点为: UIScrollView自身的约束按照正常的视图添加。 内部子控件的约束不能按照UIScrollView来设置,同时必须完整,否则撑不起contentSize。...*lastView;CGFloat height = 25;//添加子视图,并且设置子试图的约束,注意top的约束由上一个子视图决定for (int i = 0; i UIView

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

    关于Autolayout和Masonry自动布局的几个坑

    为NO的情况。...translatesAutoresizingMaskIntoConstraints默认为YES,也就是按照默认的autoresizingMask进行计算;设置为NO之后,则可以使用更灵活的Autolayout...:重置之前的约束 注意 先添加子视图,才能对子试图添加约束 如果想使用动画效果,需要如下代码: //重写updateViewConstraints方法,进行约束的更新-(void)updateViewConstraints...主要注意点为: UIScrollView自身的约束按照正常的视图添加。 内部子控件的约束不能按照UIScrollView来设置,同时必须完整,否则撑不起contentSize。...*lastView;CGFloatheight=25;//添加子视图,并且设置子试图的约束,注意top的约束由上一个子视图决定for(inti=0;iUIView*view=[[UIViewalloc

    1.6K20

    IOS开发之绝对布局和相对布局(屏幕适配)

    :(id)sender {     //获取slider的当前值(在storyboard设置的范围为0-120)     double value = self.mySlider.value;       ...我们如何让在3.5寸屏上也显示正常呢,接下啦就是相对布局出出场的时候了,我们用相对布局的方式把最下面的view的位置改为相对于主视图的底部和左边的像素值固定,同时设置slider的位置相对于下面的view...)sliderChange:(id)sender {     //为了避免冲突移除myView的水平和垂直约束,注意是从主视图上移除,因为约束是加载我们的主视图上,即相对于我们的主视图     [self.view...views:NSDictionaryOfVariableBindings(_myView)];     self.heightC = heightConstraint[0];           //往主视图上添加新的约束....……”; ​2.所以在添加新的约束之前,我们得把之前加在我们组件中相应的约束给去掉;约束是加在我们对应组件的父视图上,移除也得从组件的父视图上移除; 3.在设置约束的值的时候我们是以字符串的形式把参数传递给约束的

    2.3K60

    浅汇-iOS UI布局

    使用了这么久,       对于父试图是  Button / UITextFeild等非UIView的直接子类,布局其子视图时,这里面的约束是不生效的。...2、实现了UIView内子视图的自动布局; 3、实现了UIScrollView内容高度根据内部子视图的内容高度动态设置; 4、实现了一个UITableView有多个不同Cell的时候,所有cell高度自适应...,需要使用一下方法来自动布局,并且这个时候不可以再以父试图的底为标准来设置其内部子视图,这是一种【从里到外】的布局思路,cell的自适应高度也是这种思路;平时我们的思路都是一种【从外到里】的思路,先确定外面的再使其自动布局里面的...实现了UIScrollView可滚动高度根据内部子视图的内容高度动态设置 /** 设置scrollview内容自适应,第一个参数为作为底部的子视图,第二个参数为到sc底部的间距。...动画中试图的自动布局刷新(SDAutoLayout在动画中并不友好) [UIView animateWithDuration:0.8 animations:^{ self.view0.sd_layout

    2.1K20

    《Motion Design for iOS》(三十二)

    UIButton类有一个便利的方式来构建一个按钮:+buttonWithType:类方法。我将按钮类型设为UIButtonTypeCustom,意味着没有默认的风格会被设置,完全取决于我。...这是一种实用的简单图标按钮,没有边界和其他怪异的风格需要移除。有点类似于CSS中对按钮进行重置。 接下来我设置按钮的图片为我app包中的“map-icon”图片。...接下来我通过设置frame将按钮放置在准确的位置。 让我们看看现在app的样子,地图的alpha值被设为了0,所以它是不可见的。...我们可以检查我们的界面元素并查看它们的位置来决定我们应该做什么,但那太麻烦了,所以让我们通过一个简单的作为类@property的 BOOL 变量来跟踪状态。...在这个文件的顶部我添加了一个名为mapShowing的BOOL变量来管理我们是需要打开还是关闭地图视图。这个属性会放置在我们按钮方法的下面,而我们添加的其他属性是我们界面的主视图。

    46810

    setNeedsLayout和layoutIfNeeded看我就懂!

    当这样的约束被更新时,它会自动执行相当于setNeedsLayout的操作,因此在下一个更新周期内不需要更新视图。我们可以没有更多的代码,你会看到更新,但它不会有动画效果。...由于此布局同步发生,因此在动画块中捕获来自约束更改的帧移动,因此如果您现在运行应用程序,则可以看到红色视图在2秒钟内如何变大变小。 效果如下: ?...在这种情况下单击按钮将立即根据更新的约束更新视图大小,而不是动画更新。等一下,如果我们没有使用layoutIfNeeded,为什么会立即? 对我们而言,红色视图的大小变化立即发生。...但是,我们没有在动画块的上下文中进行视图更新,也就是说刚好是一个周期,所以它似乎是立即的,跟没有UIView.animate这段代码效果是一样的。...** 因此,由于我们的代码已经标记该视图需要通过setNeedsLayout进行布局更新,所以是在更新周期中立即启动视图更新,而不是从更新周期开始约束更改和帧移动的动画。

    2.7K90

    Core Animation Programming

    Core Animaiton 分类 提供显示内容的图层类 动画和计时类 布局和约束类 事务类,在原子更新的时候组合图层类 核心动画是包括了基础类Quartz 核心框架(Quartz Core Framework...也可以填充为图片,文本或者背景颜色等. 也能管理子视图的位置.甚至CALayer 是有很多方法和属性来做动画处理和变换处理....CALayer 是整个图层类的基础,它是所有核心动画图层类的父类. 和UIView 一样,CALayer 也是有自己的父图层类,以及同样拥有子图层类的集合. 它构成了一个图层树的层次结构....UIView 与 CALayer 平行的层级关系 每个UIView 都会有一个CALayer 实例图层属性.也就是backing layer.UIView 的职责就是创建并管理这个图层.用来确保当前子视图在层级关系中添加或者移除的时候...图层树: 包含每一层的对象模型值.其实就是开发者设置的图层的属性值 呈现树: 包括当前动画发生时候将要显示的相应的值,例如,你要给图层背景颜色设置新的值的时候,它就会立即修改图层树里对应的值.但是在呈现树里面的背景颜色值将要现在给用户的时候才会更新为新值

    1.1K10

    IOS开发之视图和视图控制器

    2.在学习UIView之前我们先在我们的EmptyProject中添加一个视图,看一下效果,上面的代码是为我们的EmptyProject添加一个UIWindow,是系统为我们创建的,我们接下来要放置的UIIView...下面的一段代码是往我们Window上添加一个主视图,通过CGRectMake来给我们新添的View定位。...我们还可以把视图看做是一个视图容器,视图上面还可以添加一个子视图。往父视图中添加的SubView会被放在一个数组中。...下面是iOS提供的一些管理子视图的方法,常用方法如下:             (1) initWithFrame : 通过frame初始化视图,参数为CGRectMake(x, y, width, height...) UIView *subView;   @end //-------实现部分----------- @implementation MainViewController //主视图加载后要做的事情 -

    1.8K70

    谈谈 Autolayout

    layoutSubViews: 当 View 及其所有子视图的 frame 发生改变的时候,会调用 layoutSubviews,所以在需要更新 frame 来重新定位或更改大小时重载它。...通常在 updateConstraints 方法中实现必须要更新的约束,在设置或者解除约束、更改约束的优先级或者常量值,或者从视图层级中移除一个视图时都会设置一个内部的标记 update constarints...,而打印出来的 frame 是 (0 0; 0 0),是因为约束被设置之后它并不会立即对 view 作出改变,而是要等到 layout 时,才会对视图的尺寸进行修改,而 layout 通常是在视图已经加载到父视图上面时做出响应...这个时候,设置约束的视图 frame 就不再是 (0,0,0,0) 了。...2、如果将约束和 frame 写在同一方法中,写完约束就设置 frame,而不是想把 frame 的设置放到 layoutSubview 中,比如设置好约束后马上就想根据约束的结果计算高度,那么必须在设置完约束之后手动调用

    70920

    【IOS开发基础系列】UIView专题

    - (void)removeFromSuperview 讨论     接收者同时释放;如果你计划重用它,要确定在发送消息前保持它并在添加到其他UIView对象作为子视图後移除。...消息或者子视图从接收者视图层次中移除因为它要被添加到其他视图了 3 UIView动画 3.1 概述         UIView视图的动画功能,可以使在更新或切换视图时有放缓节奏、产生流畅的动画效果,进而改善用户体验...讨论         如果设置为YES那么当动画在运行过程中,当前视图的位置将会作为新的动画的开始状态。如果设置为NO,当前动画结束前新动画将使用视图最後状态的位置作 为开始状态。...2.在容器视图中设置转换。 3.在容器视图中移除子视图。 4.在容器视图中添加子视图。 5.结束动画块。...如果一个子视图的区域超过父视图的bound区域(父视图的clipsToBounds属性为NO,这样超过父视图bound区域的子视图内容也会显示),那么正常情况下对子视图在父视图之外区域的触摸操作不会被识别

    70430

    iOS layout相关方法

    layoutSubviews 5.旋转Screen会触发父UIView上的layoutSubviews事件 6.改变UIView大小的时候也会触发父UIView上的layoutSubviews事件 在苹果的官方文档中强调...the autoresizing behaviors of the subviews do not offer the behavior you want.layoutSubviews 当我们在某个类的内部调整子视图位置时...假设有个UILabel 添加它距离左边的距离约束为left的constraint 值为 10 现在我们想让它距左边的距离以动画形式改变为100 如果这么做 UIView.animateWithDuration...3、通过设置contentMode属性值为UIViewContentModeRedraw。那么将在每次设置或更改frame的时候自动调用drawRect:。...不实际调整视图。 sizeToFit 会根据sizeThatFits返回的最佳大小进行调整视图。

    1.1K10

    iOS 系统中的视图动画

    哪些属性可以添加动画效果 根据 iOS 视图编程指南中说明, UIView 内置支持为下列属性添加动画效果: Frame 可以改变视图相对于上一级视图的位置和大小。...为视图的属性变化添加动画 为了给属性的变化添加动画效果, 需要把修改这些属性的代码放到指定的动画代码段 (animation block) 中。...实现动画的自动翻转 当创建自动翻转指定次数的动画时, 考虑将重复次数设置为非整数值。...创建视图切换动画 视图切换动画可以减少修改可视化树时引起的界面上的突变, iOS 系统中大量使用了视图切换动画, 视图切换动画主要有下面两种场景: 修改子视图 替换子视图 注意: 不要把视图切换和视图控制器的切换混淆...修改子视图 可以修改子视图的可见性用来表示当前视图的不同的状态, 看下面的两个视图切换的例子,在 iOS 4.0 之前, 需要将视图切换动画添加到 Begin/Commit 动画之间, 代码如下: 在

    2.2K30

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

    : @interface UIView(MyFlexLayout) /** 用于弹盒视图中的子视图的布局设置。...MyLayoutPos中的clone方法就是专门为最值约束使用的,主要为了解决那些获取最值时希望在某个位置的偏移的场景。 目前只有相对布局下的子视图才支持位置最值约束设置,其他布局下的子视图不支持。...这两个停靠属性的功能会将布局视图中的剩余空间均匀的分配到所有子视图(设置有尺寸自适应的布局视图除外)的尺寸之上,而不管子视图是否设置了尺寸约束与否,从而实现子视图之间的尺寸拉伸效果。...我们还可以通过拖放器对象来进行一些特性化设置,比如可以设置拖放的动画时长、可以设置哪些子视图在拖放时不会移动、以及是否可以在拖放时实现悬停效果等等。...MyLayout中如果我们调整了子视图的约束后希望有动画效果,那么可以调用布局视图的方法: /** *设置布局时的动画。

    1.8K10

    iOS 页面渲染 - UIView & CALayer

    return CAEAGLLayer.self } } CALayer CALayer 视图结构类似 UIView 的子 View 树形结构,它们分别可以有自己的 SubView 和 SubLayer...动画 基本上你改变一个单独的 layer 的任何属性的时候,都会触发一个从旧的值过渡到新值的简单动画,这就是所谓的隐式动画,其时长为 0.25s。...,size (CGSize 类型) 为矩形的尺寸; 上节我们已经说到 UIView 的视图属性其实本质上就是对其持有的 CALayer 属性的封装而已,下面为几个视图属性的对应关系。...坐标系改了,那么所有子视图的位置也会跟着改变。...同时这也解释了为什么通过 AutoLayout 设置约束后修改 frame 属性来改变位置和尺寸不会起作用的原因。

    1.9K20

    IOS开发系列——UIView专题之二:动画篇【整理,部分原创】

    2UIView动画 2.1概述 UIView视图的动画功能,可以使在更新或切换视图时有放缓节奏、产生流畅的动画效果,进而改善用户体验。...UIKit直接将动画集成到UIView类中,实现简单动画的创建过程。UIView类定义了几个内在支持动画的属性声明,当这些属性发生改变时,视图为其变化过程提供内建的动画支持。...参数有效 2.3.3三.core方式:使用CATransition类 iPhone还支持Core Animation作为其QuartzCore架构的一部分,CA API为iPhone应用程序提供了高度灵活的动画解决方案...讨论 如果设置为YES那么当动画在运行过程中,当前视图的位置将会作为新的动画的开始状态。如果设置为NO,当前动画结束前新动画将使用视图最後状态的位置作为开始状态。...2.在容器视图中设置转换。3.在容器视图中移除子视图。4.在容器视图中添加子视图。5.结束动画块。

    1.5K10

    iOS布局之AutoresizingMask和AutoLayout

    一.AutoResizing 我们在使用AutoResizing进行布局的时候,其主要思想就是设置子视图跟随父视图的frame变化而变化。具体的情况,我们可以设置左跟随,右跟随等等。...= [UIColor orangeColor]; [self.view addSubview:superView]; //子视图 UIView *subView = [[UIView alloc] initWithFrame...(0, 0,200 , 200); 以上代码中我们设置了子视图的宽度随父视图的变化而改变,其效果图如下: ?...从而实现了视图的自动布局。而当我们确定选择使用AutoLayout添加自己的约束的时候,我们必须设置此属性为NO,XIB中这个属性默认是NO。...2.我们设置该属性为NO,AutoResizing并不会直接失效,只有当我们为视图设置了constraint之后,AutoResizing才会失效。

    1.9K60

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

    线性布局是一种里面的子视图按添加的顺序从上到下或者从左到右依次排列的单列(单行)布局视图,因此里面的子视图是通过添加的顺序建立约束和依赖关系的。...相对布局是一种里面的子视图通过相互之间的约束和依赖来进行布局和定位的布局视图。相对布局里面的子视图的布局位置和添加的顺序无关,而是通过设置子视图的相对依赖关系来进行定位和布局的。...框架布局是一种里面的子视图停靠在父视图特定方位并且可以重叠的布局视图。框架布局里面的子视图的布局位置和添加的顺序无关,只跟父视图建立布局约束依赖关系。...如果行视图在表格布局里面是从上到下排列的则表格布局为垂直表格布局,垂直表格布局里面的子视图在行视图里面是从左到右排列的;如果行视图在表格布局里面是从左到右排列的则表格布局为水平表格布局,水平表格布局里面的子视图在行视图里面是从上到下排列的...流式布局主要应用于那些子视图有规律排列的场景,在某种程度上可以作为UICollectionView的替代品。

    1.9K30
    领券