iOS使用代码调整约束做动画效果时出现Unable to simultaneously satisfy constraints.

出现这个问题时, 首先应该仔细看错误, 去除多余的存在冲突的约束,

Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don‘t want. Try this: (1) look at each constraint and try to figure out which you don‘t expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you‘re seeing NSAutoresizingMaskLayoutConstraints that you don‘t understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
    "<NSLayoutConstraint:0x170097340 V:|-(0)-[UICollectionView:0x127981200]   (Names: ‘|‘:UIView:0x1275336e0 )>",
    "<NSLayoutConstraint:0x170095680 V:[UICollectionView:0x127981200]-(38)-|   (Names: ‘|‘:UIView:0x1275336e0 )>",
    "<NSLayoutConstraint:0x17009d830 V:[_UILayoutGuide:0x12753f2d0]-(0)-[UIView:0x1275336e0]>",
    "<NSLayoutConstraint:0x1700973e0 V:[UIView:0x1275336e0]-(416)-[_UILayoutGuide:0x12753f090]>",
    "<_UILayoutSupportConstraint:0x1742bda60 V:[_UILayoutGuide:0x12753f2d0(0)]>",
    "<_UILayoutSupportConstraint:0x1742b9560 V:|-(0)-[_UILayoutGuide:0x12753f2d0]   (Names: ‘|‘:UIView:0x1275ce900 )>",
    "<_UILayoutSupportConstraint:0x1742bdbe0 V:[_UILayoutGuide:0x12753f090(0)]>",
    "<_UILayoutSupportConstraint:0x1742bd9a0 _UILayoutGuide:0x12753f090.bottom == UIView:0x1275ce900.bottom>",
    "<NSLayoutConstraint:0x174284d80 ‘UIView-Encapsulated-Layout-Height‘ V:[UIView:0x1275ce900(416)]>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170095680 V:[UICollectionView:0x127981200]-(38)-|   (Names: ‘|‘:UIView:0x1275336e0 )>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.

这些都做完了发现还是报错的话, 看一下代码里改变约束的顺序

- (void)updateViewConstraints {
    [super updateViewConstraints];
    //隐藏筛选框
    _siftTopCons.constant = -ScreenHeight+64;//顶部先上去
    _siftBottomCons.constant = ScreenHeight-64;//底部再上来

}

比如这个地方, 我让这个View整体往上移动一个屏幕高度, 使其隐藏, 那么应该先把顶部的约束设置完, 再设置底部, 同理, 当要显示的时候, 整个View往下移动一个屏幕高度, 就应该先设置底部的约束, 再设置顶部, 总之就是不要让整个View的大小在设置的过程中发生可能的 尺寸变小

              _siftBottomCons.constant = 0;//底部先出来
        _siftTopCons.constant = 0;//顶部再向下

        [UIView animateWithDuration:0.27 animations:^{
            [self.view layoutIfNeeded];
        }];
时间: 2024-10-11 17:00:29

iOS使用代码调整约束做动画效果时出现Unable to simultaneously satisfy constraints.的相关文章

cordova for ios: Unable to simultaneously satisfy constraints.

使用cordova开发ios项目的时候,在上传图片碰到一个问题.使用html的<input type="file"/>标签来选择照片或者拍照片,引起了布局报错,然后图片上传过程中很容易崩溃闪退. html页面代码: <html><head></head> <body> <input type="file" /> </body> </html> 然后在真机测试,点击选择文件

iOS点击查看大图的动画效果

对于图片来说,除了表情包,几乎都会被点击查看大图.今天就讲解一个查看和收起大图的动画效果,先直接看效果图: 如图所示,最开始是一个小图,点击小图可以查看大图.大图会从小图的位置和大小"弹"出来,同时背景变成半透明的阴影.点击大图或者阴影后,收起大图,同样地弹回到小图去,同时去掉阴影背景,就像是一张图片在伸大缩小一样. 现在看看这是怎么实现的.在思考一个动画的实现方法时,把动画的动作进行分解然后再一个个去思考怎么实现是一个好的习惯,我们稍微分解一下,这个动画在显示大图和收起大图的时候做了

Android分别通过代码和xml实现动画效果

一.Android动画类型 Android的animation由四种类型组成: XML中 alph 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面转移旋转动画效果 JavaCode中 AlphaAnimation 渐变透明度动画效果 ScaleAnimation 渐变尺寸伸缩动画效果 TranslateAnimation 画面转换位置移动动画效果 RotateAnimation 画面转移旋转动画效果 二.Android动画模

使用requestAnimationFrame做动画效果二

3月是个好日子,渐渐地开始忙起来了,我做事还是不够细心,加上感冒,没精神,今天差点又出事了,做过的事情还是要检查一遍才行,哎呀. 使用requestAnimationFrame做动画,我做了很久,终于在二月底完工了,中间绕了不少弯路,先把domo放出来: 要实行的功能显而易见,一开始我粗糙地不考虑性能,不使用requestAnimationFrame,已经做出来了,但是觉得不好,于是进行了进一步改进.采用对象的方法,先生成10个粉色的小方块,隐藏起来,然后利用requestAnimationFr

Swift - 自动布局库SnapKit的使用详解3(约束优先级,约束做动画)

1,约束优先级我们使用SnapKit的时候,还可以定义约束的优先级.这样当约束出现冲突的时候,优先级高的约束覆盖优先级低的约束.具体优先级可以放在约束链的结束处. (1)可以设置如下几种优先级 priorityLow():设置低优先级,优先级为250priorityMedium():设置中优先级,优先级为500(这个也就是默认的优先级)priorityHigh():设置高优先级,优先级为750priority():可以设置任意的优先级,接受的参数是0-1000的数字.比如:priority(60

ios开发之简单实现loading动画效果

最近有朋友问我类似微信语音播放的喇叭动画和界面图片加载loading界面是怎样实现的,是不是就是一个gif图片呢!我的回答当然是否定了,当然不排除也有人用gif图片啊!下面我就来罗列三种实现loading动画效果的方法. 方法一:使用UIImageView自带的方法来实现,这也是我推荐的实现方法. NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:[UIImage imageNamed:@"1.png"],[

iOS添加到购物车的简单动画效果

[objc] view plaincopyprint? [objc] view plaincopyprint? #pragma mark - 添加到购物车的动画效果 // huangyibiao - (void)addAnimatedWithFrame:(CGRect)frame { // 该部分动画 以self.view为参考系进行 frame = [[UIApplication sharedApplication].keyWindow  convertRect:frame fromView:

IOS AutoLayout 代码实现约束—VFL

在autolayout下,尽管使用IB来拖放控件,但仍然避免不了用代码来创建控件,这是约束需要代码来实现. IOS 提供了两种添加约束的方法 第一种: +(instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multip

161设置在屏幕中的动画延迟(扩展知识:普通操作和代码块操作实现动画效果)

效果如下: ViewController.h 1 #import <UIKit/UIKit.h> 2 3 @interface ViewController : UIViewController 4 @property (strong, nonatomic) UIImageView *imgVAnimation; 5 6 @end ViewController.m 1 #import "ViewController.h" 2 3 @interface ViewControl