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

在更改固有大小的同时为NSLayoutConstraint设置动画带来的麻烦

是由于以下几个方面:

  1. 自动布局约束的冲突:NSLayoutConstraint是用于自动布局的一种机制,它定义了视图之间的关系和约束条件。当我们在动画过程中改变视图的固有大小时,可能会导致与已有的约束条件冲突,从而导致布局混乱或者动画效果不符合预期。
  2. 动画效果的不连贯性:在动画过程中改变视图的固有大小,可能会导致动画效果不连贯。比如,如果一个视图在动画开始时是一个较小的大小,然后在动画过程中突然变大,这种突变的效果可能会让用户感到不自然或者突兀。
  3. 性能问题:在动画过程中频繁地改变视图的固有大小,可能会导致性能问题。特别是在复杂的界面中,如果没有合理地管理动画的执行,可能会导致界面卡顿或者动画不流畅。

为了解决以上问题,可以采取以下几种方法:

  1. 提前设置好约束条件:在动画开始之前,先设置好视图的约束条件,确保在动画过程中不会出现冲突。可以通过调整约束的优先级、使用合适的约束关系等方式来避免冲突。
  2. 使用动画库:可以使用一些专门的动画库来处理视图的动画效果,这些库通常提供了更高级的动画控制和管理机制,可以更好地处理视图大小的变化。例如,iOS平台上的Core Animation框架提供了丰富的动画功能,可以用来实现平滑的视图大小变化动画。
  3. 优化性能:在动画过程中,尽量减少视图大小的改变次数,避免频繁地执行动画操作。可以通过合并多个动画操作、使用硬件加速等方式来提高性能。

总结起来,为了在更改固有大小的同时为NSLayoutConstraint设置动画带来的麻烦,我们可以提前设置好约束条件,使用专门的动画库来处理动画效果,并优化性能以提高用户体验。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS界面布局之三——纯代码的autoLayout及布局动画

iOS界面布局之三——纯代码的autoLayout及布局动画 一、引言         关于界面布局,apple的策略已经趋于成熟,autolayout的优势在开发中也已经展现的淋漓尽致。...这个概念,相应的也增加了NSLayoutConstraint这个对象,这个对象就是专门用来进行约束布局的设置对象。...;     //使用代码布局 需要将这个属性设置为NO     label.translatesAutoresizingMaskIntoConstraints = NO;     label.backgroundColor...可以发现,一个如此简单的约束方式,我们用这样的代码要写这么一大坨,麻烦而且不直观。于是,apple又提供给我们下面一种方式。...四、通过动画改善更新约束时的效果         这一点非常coll,上面我们已经实现了textView随文本的行数高度进行自适应,但是变化的效果十分生硬,还要apple的动画框架支持autolayout

2.9K30

iOS学习——UIView的研究

视图内容填充模式 UIViewContentMode 视图动画过渡效果 UIViewAnimationTransition 视图自动调整大小方式 UIViewAutoresizing 视图的动画选项 ...,比喻第一视图、基线视图、视图大小等等 视图约束适应尺寸相关的扩展 UIView (UIConstraintBasedLayoutFittingSize),主要用于获取持有约束的视图大小及其区域内的视图大小...setAnimationDelay:(NSTimeInterval)delay; 362 /** 设置在动画块内部动画属性改变的开始时间, 默认now ([NSDate date]) */ 363 +...)fromCurrentState; 372 373 /** 在动画块中为视图设置过渡动画 */ 374 + (void)setAnimationTransition:(UIViewAnimationTransition...*/ 422 @interface UIView (UIViewKeyframeAnimations) 423 424 /** 创建一个动画块对象,可用于为当前视图设置基于关键帧的动画 */ 425

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

    约束 Auto Layout你的视图层级里所有视图通过放置在它们里面的约束来动态计算的它们的大小和位置。...,比如UILabel,UIButton,选择控件,进度条和分段等等,可以自己计算自己的大小,比如label设置text和font后大小是可以计算得到的。...这时可以通过设置Hugging priority让这些控件不要大于某个设定的值,默认优先级为250。...调用了setNeedsLayout后不能通过frame改变视图和控件 为了让在设置了setTranslatesAutoresizingMaskIntoConstraints:NO视图里更改的frame立刻生效而执行了没有标记立刻刷新的...:NO时会严格按照约束->Engine->显示这种流程,如在Deferred Layout Pass之前设置好是没有问题的,之后强制执行LayoutSubview会产生一个权重和先前一样的约束在类似动画

    1.3K10

    Autolayout

    的步骤 利用NSLayoutConstraint类创建具体的约束对象 添加约束对象到相应的view上 - (void)addConstraint:(NSLayoutConstraint *)constraint...; - (void)addConstraints:(NSArray *)constraints; 代码实现Autolayout的注意点 要先禁止autoresizing功能,设置view的下面属性为NO...view.translatesAutoresizingMaskIntoConstraints = NO; 添加约束之前,一定要保证相关控件都已经在各自的父控件上 不用再给view设置frame NSLayoutConstraint...(1) 在创建约束之后,需要将其添加到作用的view上 在添加时要注意目标view需要遵循以下规则: 1)对于两个同层级view之间的约束关系,添加到它们的父view上 ?...UILabel实现包裹内容 设置宽度约束为 <= 固定值 设置位置约束 不用去设置高度约束 基于Autolayout的动画 在修改了约束之后,只要执行下面代码,就能做动画效果 [UIView animateWithDuration

    92860

    设计iOS中随系统键盘弹收和内容文字长度自适应高度的文本框

    设计iOS中随系统键盘弹收和内容文字长度自适应高度的文本框     文本输入框是多数与社交相关的app中不可或缺的一个控件,这些文本输入框应该具备如下的功能: 1.在键盘为弹起时,输入框悬浮在界面底部...2.当键盘弹起时,输入框位置上移至键盘上方,并且动画应与键盘同步。 3.当输入的文字超出一行时,输入框应想用的进行高度扩展。...将需要的属性与约束对象关联到文件中: //整体文本控件的高度     @IBOutlet weak var textViewHeight: NSLayoutConstraint!     ...//文本控件中的文字输入控件UITestView的高度     @IBOutlet weak var textFieldHeight: NSLayoutConstraint!     ...在初始化方法中进行通知的注册和代理的设置:     NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("

    1.5K20

    「 UITableView 入门 」新人解决列表 Cell 高度自适应,UITableViewCell 高度自适应

    属性为 true 最后是,这个 cell 不能通过简单的 frame 设置大小,而是需要通过 NSLayoutConstraint 来动态给定 首先这里我先提供下最终实现的代码再逐个给大家分析: import...属性设置为 false 拿代码 + 注释举个例子: lazy var contentLabel: UILabel = { let label = UILabel()...本身需要注意的地方并不多 相比于普通 UItableView 的使用,这里要添加 translatesAutoresizingMaskIntoConstraints 的设置 同时通过 NSLayoutConstraint.activate...设置设置 tableView 之于 ViewController 大小 import Foundation import UIKit class LandscapeListViewController...同时欢迎大家点赞或者关注支持,因为这是我持续输出的最大动力~

    2.2K10

    iOS开发之扫描二维码

    我在参考了网上的很多博客并自己摸索了以后,写了一个具体的实现案例,过程中遇到很多坑,在此记录并分享一下。...扫描二维码.gif 总结 一、遇到的坑 1、设置了AutoLayout,想要做动画,这时候动画放在viewDidAppear中执行,并且不要用bounds,frame来改变动画,要用具体的约束,但是直接在...UIView动画中修改约束是没效果的,需要在设置完约束以后,加上[self.view layoutIfNeeded];。...2、设置扫描区域,也就是设置AVCaptureMetadataOutput的rectOfInterest属性,它是一个CGRect类型,但是它的四个值和传统的不一样,是(y,x,高,宽)且是比例值,取值范围为...3、中间方块是通过CALayer两步实现的,第一步设置整个背景颜色,这个颜色根据中间想显示的样式来设置;第二步在代理方法里面重新设置一次背景颜色,这个颜色根据除中间以外的区域来设置,然后将中间的挖掉。

    1.9K40

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

    1 简介         bounds是指这个view在它自己坐标系的坐标和大小 而frame指的是这个view在它superview的坐标系的坐标和大小区别主要在坐标系这一块。...在接着后面-[]中括号里面对当前的View/控件 的高度/宽度进行设定; options:字典类型的值;这里的值一般在系统定义的一个enum里面选取; metrics:nil;一般为nil,参数类型为NSDictionary...--距离父视图左侧距离为0(距离为0的话也可省略)同时将v2的水平方向的宽度和v1设置成相同 [self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat...--距离父视图上侧距离为0(距离为0的话也可省略)同时将v2的垂直方向的高度和v1设置成相同  [self.viewaddConstraints:[NSLayoutConstraint constraintsWithVisualFormat...Constraint问题 4.1.1 不能同时设置一个控件横向或纵向的相对间距后,又去设置绝对尺寸,否则会导致控件不能显示,也不会报错!

    34940

    iOS-屏幕适配实现(AutoLayout)

    XCode5及其之后的版本,默认新建的项目就是使用AutoLayout 关于约束 约束概念 AutoLayout主要是通过控件参照与约束实现,比如控件A相对控件B来说,控件A在控件B的正下方,间距为20px...如果我们通过约束给定了UILabel的width = 100,但是内容仍然少的可怜,不能包裹,可以把宽度设置为的宽高都能包裹住内容。高度的设置同理可证。...Safe Area : iOS11中增加的,safe area 可以看作是系统在所有的 view 上加了一个虚拟的 view, 这个虚拟的 view 的大小等都是跟 view 的位置等有关的(当然是在...准备的,一般都会去掉 User Standard Value :使用标准的的值,而且这个值只有在是设置上下方向的时候才有用。...功能,设置要添加约束的控件的下面属性为 NO testView.translatesAutoresizingMaskIntoConstraints = NO; 2.添加约束之前,一定要保证相关控件都已经在各自的父控件上

    44010

    Swift-MVVM 简单演练(一)

    == 1的时候,就设置返回按钮文字为根控制器的title override func pushViewController(_ viewController: UIViewController, animated...} 设置支持的方向之后,当前的控制器及子控制器都会遵守这个方向,因此写在HQMainViewController里面 ---- 利用 extension 隔离 TableView 数据源方法 在基类设置...有几点需要注意的 动画旋转需要一直保持,切换到其它控制器或者退到后台再回来,要保证动画仍然能继续转动 设置动画的旋转周数tiValue的M_PI在swift 3.0以后已经不能再用了,需要用Double.pi...则可以直接通过addTarget的方式为该视图中的按钮添加监听方法 这样做的代价是耦合度高,控制器和视图绑定在一起,但是省略部分冗余代码 ---- 调整未登录时导航按钮 如果单纯的在setupVistorView...HQNetWorkManager中新建一个tokenRequest方法,该方法只是把之前的request方法调用一下,同时把token增加到该方法里。

    10.3K51

    jQuery笔记(2)

    排队方法用于停止动画或效果 注意: stop()写到动画或者效果的前面,相当于停止结束上一次的动画 搞定!..., [speed], [easing], [fn]) 这里只解释第一个参数 params: 想要更改的样式属性,以对象形式传递,必须写.属性名可以不用带引号,如果是符合属性则需要采取驼峰命名法如:borderLeft...”提供技术支持 设置或获取元素固有属性值 prop( ) 所谓元素固有属性就是元素自身自带的属性,比如元素里面的href,元素里的type....,需要用到attr( ) 本文由“壹伴编辑器”提供技术支持 数据缓存 data( ) data( )方法可以在指定的元素上存取数据,并不会修改DOM元素结构.一旦页面刷新,之前存放的数据都将被移除...本文由“壹伴编辑器”提供技术支持 返回指定祖先元素 有时候我们结构有太多层,找一个元素就会非常麻烦,需要一层一层的parent().parent().parent(),所以我们学习返回指定祖先元素的方法

    84810

    从案例出发,由浅到深了解 iOS 动画

    有手动设置交互效果,看起来像是动画,一般要用到插值。 至于动画框架,有 UIView 级别的,有功能强劲的 CALayer 级别的动画。...,然后对四个控件,做移位操作 用简单的关键帧动画,处理要优雅一点 * * * 例子三:地图定位波动 [strip] 看上去有些眼花的动画,可以分解为三个动画 [image] 一波未平,一波又起,做一个动画效果的叠加...这个也是 UIView 的动画 [image] 动画的实现效果,是通过更改约束。...约束动画要注意的是,确保动画的起始位置准确,起始的时候,一般要调用其父视图的 layoutIfNeeded 方法,确保视图的实际位置与约束设置的一致。...return gradientLayer }() // 文字转图片,然后绘制到视图上 // 通过设置渐变图层的遮罩 `mask` , 为指定文字,来设置渐变闪烁的效果

    78330

    Objectiv-C UIKit基础 NSLayoutConstraint的使用(VFL实现)

    上间隔40 高为200 蓝色在橙色内(0,0)处 宽高为橙色的一半 实现效果如下 ?...metrics 以字典的形式设置距离变量 比如 "H:|-[dis1]-[view1]-[dis2]-[view2(==view1)]-20-|"这句中的[dis1] [dis2]为视图变量,将字典的...view1 view2即为key 对应相应的视图 views 以字典的形式设置视图变量 比如 "H:|-20-[view1]-20-[view2(==view1)]-20-|"这句中的[view1]...[view2]为视图变量,将字典的view1 view2即为key 对应相应的视图 约束关系(与父类的关系)用到另一个类方法 +(instancetype)constraintWithItem:(id...c 偏移量 在添加约束时 一定要记得是在父类上添加约束 比如 为 orangeView 和 greenView添加约束需要在其父类self.view上添加约束 blueView的父类是orangeView

    45230

    深度解析 Jetpack Compose 布局

    Image 的叶子节点通常是空节点,但所有布局都会在设置其尺寸的同时返回这些放置指令; Row 测量它的第二个子节点 Column; Column 测量其子节点,首先测量第一个子节点 Text; Text...以 Jetsnack 应用中的自定义底部导航为例,在该设计中,如果某项目被选中,则显示标签;如果未被选中,则只显示图标。而且,设计还需要让项目的尺寸和位置根据当前选择状态执行动画。...在确定固有尺寸后,将使用这些值设置 Column 的尺寸,然后,子节点就可以填充 Column 的宽度了。 如果使用最小值而非最大值,又会发生什么呢?...由于滚动状态是从组合中读取的,任何更改都会导致重组,在重组时,还需要进行布局和绘制这两个后续阶段。 不过,我们不是要更改显示的内容,而是更改内容的位置。...当信息类型随尺寸更改时才使用 BoxWithConstraints。 提高布局性能 有时候,布局不需要测量其所有子节点便可获知自身大小。

    2.1K30

    Cell 动态行高文字显示不全问题探索

    : 设置 label 的 numberoflines 为 0 对 label 进行上左下右的完整约束 在项目实现过程中,遇到了文本内容被截断最后一行一小部分,无法完全显示的问题。...但是内容距离 cell 底部的距离太小了,并没有大于 9。猜测:这个底部约束因为优先级是Low,所以被系统舍弃,使得内容可以显示完整,同时导致内容距离 cell 底部的距离太小。...但是,当我尝试设置底部约束的为 >= 9+8=17,再运行,居然就是我想要的效果: [Simulator Screen Shot - iPhone SE (1st generation) - 2021-...在 cell 显示之前,setFrame 生效,此时,cell 在之前预估行高的基础上,根据约束重新布局,舍弃了内容 label 的高度约束,导致内容显示不全。...其他解决思路 当然,为了实现行分割线效果,我们也可以在自定义 cell 的底部手动添加一个 UIView 子视图,高度设置为 cell 间隔高度,颜色改为与 UITableview 背景色一致(与 cell

    2.3K00

    Android技能树 — Drawable小结

    固有高/宽 & 大小 ? 我们知道平常使用最多的Drawable可能是图片了,我们知道一个图片的原本的尺寸,比如下面这个图: ? ?...大小为64X64,我们把它赋值给一个ImageView做为背景,同时这个ImageView设置的宽高都很大: <ImageView android:layout_width=...我们可以看到我们的图片实际上变的很大,所以最终的图片大小不一定是它固有宽/高。...所以对于这个图片,它的固有高/宽是它原本图片的大小,而实际上当最为我们ImageView的背景后,被拉伸至于View同等大小了。...主要是用来实现二个Drawable之间的淡入淡出,很容易就想到了animation动画来实现,但是发现使用动画的话,但是在调用statAnimation的时候因为图片已经显示了,再播放一次动画其实会导致细微的闪烁效果

    55710
    领券