【iOS入门】mesonry 更新约束注意点

练习UI布局

masonry 把下划线View移动左边。

开始时对齐中间的 lable ,点击时移动到对应lable下面。

使用方法:

    [indicator mas_updateConstraints:^(MASConstraintMaker *make) {
        make.centerX.equalTo(curCurTab);
    }];
    

直接报错:

[LayoutConstraints] 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.
(
    "<MASLayoutConstraint:0x600002860660 UILabel:0x7feeda8202e0.width == 60>",
    "<MASLayoutConstraint:0x600002860060 UILabel:0x7feeda820070.width == 60>",
    "<MASLayoutConstraint:0x600002860840 UILabel:0x7feeda820070.right == UILabel:0x7feeda8202e0.left>",
    "<MASLayoutConstraint:0x600002860cc0 UIView:0x7feeda820f10.centerX == UILabel:0x7feeda8202e0.centerX>",
    "<MASLayoutConstraint:0x600002845560 UIView:0x7feeda820f10.centerX == UILabel:0x7feeda820070.centerX>"
)

Will attempt to recover by breaking constraint
<MASLayoutConstraint:0x600002860660 UILabel:0x7feeda8202e0.width == 60>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.
2020-01-13 17:08:47.697034+0800 UITabBarControllerTest[62772:3586985] [LayoutConstraints] 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.
(
    "<MASLayoutConstraint:0x600002860060 UILabel:0x7feeda820070.width == 60>",
    "<MASLayoutConstraint:0x600002860840 UILabel:0x7feeda820070.right == UILabel:0x7feeda8202e0.left>",
    "<MASLayoutConstraint:0x600002860cc0 UIView:0x7feeda820f10.centerX == UILabel:0x7feeda8202e0.centerX>",
    "<MASLayoutConstraint:0x600002845560 UIView:0x7feeda820f10.centerX == UILabel:0x7feeda820070.centerX>"
)

原因:

参考这个https://blog.csdn.net/captainjackNO1/article/details/51275161

mas_updateConstraints方法里对同一个布局的理解就是相对的元素也是一致才行,即这里这样做才算一次update

A->B A->B的变化
A->C 是一个新的约束

或者

使用:

mas_remakeConstraints 重做约束。
    [indicator mas_remakeConstraints:^(MASConstraintMaker *make) {
        make.centerX.equalTo(curCurTab);
        make.bottom.equalTo(tabLayout.mas_bottom).offset(-2);
        make.height.equalTo(@3);
        make.width.equalTo(@15);
    }];

原文地址:https://www.cnblogs.com/mamamia/p/12188241.html

时间: 2024-10-11 07:45:55

【iOS入门】mesonry 更新约束注意点的相关文章

Masonry remake更新约束

前言 说到iOS自动布局,有很多的解决办法.有的人使用xib/storyboard自动布局,也有人使用frame来适配.对于前者,笔者并不喜欢,也不支持.对于后者,更是麻烦,到处计算高度.宽度等,千万大量代码的冗余,对维护和开发的效率都很低. 笔者在这里介绍纯代码自动布局的第三方库:Masonry.这个库使用率相当高,在全世界都有大量的开发者在使用,其star数量也是相当高的. 效果图 本节详解Masonry的以动画的形式更新约束的基本用法,先看看效果图: 我们这里初始按钮是一个很小的按钮,点击

Masonry整体动画更新约束

前言 说到iOS自动布局,有很多的解决办法.有的人使用xib/storyboard自动布局,也有人使用frame来适配.对于前者,笔者并不喜欢,也不支持.对于后者,更是麻烦,到处计算高度.宽度等,千万大量代码的冗余,对维护和开发的效率都很低. 笔者在这里介绍纯代码自动布局的第三方库:Masonry.这个库使用率相当高,在全世界都有大量的开发者在使用,其star数量也是相当高的. 效果图 本节详解Masonry的以动画的形式更新约束的基本用法,先看看效果图: 我们这里初始按钮是一个很小的按钮,点击

Masonry 动画更新约束

前言 说到iOS自动布局,有很多的解决办法.有的人使用xib/storyboard自动布局,也有人使用frame来适配.对于前者,笔者并不喜欢,也不支持.对于后者,更是麻烦,到处计算高度.宽度等,千万大量代码的冗余,对维护和开发的效率都很低. 笔者在这里介绍纯代码自动布局的第三方库:Masonry.这个库使用率相当高,在全世界都有大量的开发者在使用,其star数量也是相当高的. 效果图 本节详解Masonry的以动画的形式更新约束的基本用法,先看看效果图: 我们这里初始按钮是一个很小的按钮,点击

iOS入门学习详解

本文来源:http://www.zretc.com/technologyDetail/447.html ios学习起来并没有想象中的那么困难,只不过是你想要开发ios的话,成本相对比较高吧,在windows里面装虚拟机的时代我是体验过的,那个开发起来简直就是苦不堪言啊,那个宕机的速度真是分分钟的事,reset已经被用的如火纯清了,这样你就需要一台mac,有了mac还不够,总不能全部用模拟器开发吧,像定位啊之类的,还是需要实机来测试的,模拟器跟实机的差别还是挺大的.当然也没必要开发之前就买一个帐号

Xcode8更新约束

Xcode升级之后就会发现约束设置好,想更新一下约束,看看约束是不是刚刚好,习惯性的去点右下角的更新约束的结果却发现没有更新约束的这一项了,好尴尬. 后来发现原来在Xcode8的约束更新换了一个地方,并不是在原来的右下角那个地方,而是在原来的那一行的最左边,点击即可更新约束,就会看到约束加的是否正确. 附图:

IOS Google语音识别更新啦!!!

旧版本的API: -Google提供了一个在线语音识别的API接口,通过该API可以进行中文.英文等语言的识别. API地址:http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN&maxresults=1 -参数解释: xjerr:错误标准 client: 客户端类型 lang:待识别语言类型,en-US是英文,中文为zh-CN, maxresults:最大返回识别结果数量

ios入门篇 -hello Word(1)

温馨提示:,如果您使用移动终端阅读本篇文章,请连接wifi的情况下阅读,里面有大量图片,以免造成您不必要的损失. 潜水博客园很多年,闲来无事,聊一下自己的经历,语文不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的. 博主介绍   2010 入园博客园学习.net,只是为后面做.net开发做铺垫.   2011-2012年 2年一直做.net开发(一直处于打杂状态),由于一直打杂状态,萌发转行做ios的状态.   2013-至今 做过4-5个ios方面的app(现阶段处于打杂状态).

IOS入门之StoryBoard

概述 在iOS的发展历程中,IOS开发经历了三种主要流派:使用代码手写UI及布局:使用单个xib文件组织viewController或者view:使用StoryBoard来通过单个或很少的几个文件构建全部UI.而在最近几年的开发中,苹果对 Storyboard 的开发力度也不断增强,添加了更多功能和特性,大大方便了界面的开发.适配以及提升代码性能. 我们来看看三种方式的主要区别: 手写页面和逻辑代码 如果你的目的是写一些可以高度重用的控件提供给其他开发者使用,那毫无疑问最好的选择应该是使用代码来

关于自动布局更新约束方法的总结

1.layoutSubviews 在iOS5.1和之前的版本,此方法的缺省实现不会做任何事情(实现为空),iOS5.1之后(iOS6开始)的版本,此方法的缺省实现是使用你设置在此view上面的constraints(Autolayout)去决定subviews的position和size. UIView的子类如果需要对其subviews进行更精确的布局,则可以重写此方法.只有在autoresizing和constraint-based behaviors of subviews不能提供我们想要的