首页 > 其他分享 >Apple开发_Masonry中 mas_remakeConstraints和mas_makeConstraints的效果是一样的,那么我以后都用mas_remakeConstraints会有什么问题

Apple开发_Masonry中 mas_remakeConstraints和mas_makeConstraints的效果是一样的,那么我以后都用mas_remakeConstraints会有什么问题

时间:2024-07-08 16:23:09浏览次数:8  
标签:mas Apple remakeConstraints 视图 约束 makeConstraints Masonry

1、前言

  • 在 Masonry 布局框架中,mas_makeConstraints 和 mas_remakeConstraints 虽然都用于设置视图的约束,但它们的行为和用途是有区别的。

2、功能作用

  • mas_makeConstraints

    • mas_makeConstraints 用于首次为视图创建约束。当你想要为一个新添加的视图或者之前未设置约束的视图添加布局约束时,你应该使用这个方法。
    • 使用 mas_makeConstraints 时,它只添加你指定的约束,而不会移除该视图上已有的其他约束(除非这些约束是通过 Masonry 设置的,并且使用了 mas_remakeConstraints 或 mas_updateConstraints)。
  • mas_remakeConstraints

    • mas_remakeConstraints 用于重新为视图设置约束,它会先移除该视图上所有通过 Masonry 设置的约束(如果有的话),然后再添加你指定的新约束。
    • 这个方法在你需要完全替换一个视图的约束时非常有用,比如当视图的布局条件完全改变时。

3、使用 mas_remakeConstraints 的潜在问题

  • 虽然可以选择只使用 mas_remakeConstraints 来管理所有视图的约束,但这样做可能会带来一些问题或不便:
  • 性能问题:
    • 每次调用 mas_remakeConstraints 都会先移除所有现有的 Masonry 约束,然后再添加新的约束。
    • 如果你的应用频繁地重新设置视图的约束,这种移除和重设的操作可能会引入不必要的性能开销。
  • 维护困难:
    • 随着项目的增长,视图的约束可能会变得复杂。
    • 如果只使用 mas_remakeConstraints,你可能会失去对哪些约束是必需的和哪些约束是多余的清晰理解,这可能会使维护变得更加困难。
  • 意外的布局行为:
    • 如果你不小心移除了原本需要保留的约束,可能会导致布局出现意外的行为。
    • 特别是当视图之间共享某些约束时,这种问题尤其容易发生。

4、结论

  • 如果你只是需要为视图添加新的约束,并且这些新约束不会与现有的约束冲突,那么使用 mas_makeConstraints 可能是更好的选择。
  • 如果你需要完全替换视图的约束,那么 mas_remakeConstraints 则是合适的选择。在大多数情况下,混合使用这两种方法可能会提供更好的灵活性和性能。

标签:mas,Apple,remakeConstraints,视图,约束,makeConstraints,Masonry
From: https://www.cnblogs.com/CH520/p/18290120

相关文章

  • MySQL 主从报错“Got fatal error 1236 from master when reading data from binary l
    1、背景一主一从报错,测试环境从库执行showslavestatus\Gmysql>showslavestatus\G***************************1.row***************************Slave_IO_State:Master_Host:10.0.0.51Master_User:repl......
  • Xcode 16 beta 2 (16A5171r) 下载 - Apple 平台 IDE
    Xcode16beta2(16A5171r)-Apple平台IDEIDEforiOS/iPadOS/macOS/watchOS/tvOS/visonOS请访问原文链接:https://sysin.org/blog/apple-xcode-16/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgXcode16的新功能使用预测代码补全功能和更快的预览功能,将奇思......
  • Python实现基于先验MASK的视频问答(先验注意力机制的视频问答即之江数据集问答方案)
    !!!有需要的小伙伴可以通过文章末尾名片咨询我哦!!! ......
  • SimMTM: 用于掩码时间序列建模的简单预训练框架《SimMTM: A Simple Pre-Training Fram
    今天是2024年7月3日10:15,写一篇1月7日就看过的论文,哈哈哈哈哈哈哈哈哈,突然想到这篇论文了。论文:SimMTM:ASimplePre-TrainingFrameworkforMaskedTime-SeriesModeling或者是:SimMTM:ASimplePre-TrainingFrameworkforMaskedTime-SeriesModelingGitHub:https://githu......
  • 实战篇——SQL注入sqli-labs-master靶场实战三
    实战篇——SQL注入sqli-labs-master靶场实战(3)sqlmap基础用法GET型:POST型:请求头注入(以User-Agent注入为例):爆库:pythonsqlmap.py-rC:\Users\yaogu\Desktop\sqlmap\request\1.txt--threads10--dbs爆表:pythonsqlmap.py-rC:\Users\yaogu\Desktop\sqlmap......
  • 实战篇——SQL注入sqli-labs-master靶场实战二
    实战篇——SQL注入sqli-labs-master靶场实战(2)SQL注入的高级利用(1)宽字节注入有时后端会对用户输入的特殊字符进行转义处理,这时普通的注入方式就会失效。对于成对的单引号'',可以通过十六进制编码的方式绕过转义;而对于单个的单引号',当数据库的编码格式为GBK时,就要用到宽字节......
  • 实战篇——SQL注入sqli-labs-master靶场实战一
    实战篇——SQL注入sqli-labs-master靶场实战(1)SQL注入的原理没有对用户的输入进行合法性判断或过滤,而是直接将其拼接至SQL查询语句当中作为命令执行,从而导致非法操作。SQL注入的检测也就是闭合方式的判断,根据报错信息的不同情况可以分为3类——(1)有报错信息(2)无报错信息,但......
  • ata1.00: exception Emask 0x0 SAct 0x8000000 SErr 0x0 action 0x6 frozen 问题解析
    ata1.00:exceptionEmask0x0SAct0x8000000SErr0x0action0x6frozen硬盘问题测试发现嵌入式linuxvfat文件系统的sata固态硬盘偶然启动时出现异常打印如下:ata1.00:exceptionEmask0x0SAct0x8000000SErr0x0action0x6frozenata1.00:failedcommand:READFPD......
  • Apple - Core Image Kernel Language Reference
    本文翻译整理自:CoreImageKernelLanguageReference(更新日期:2015-01-12https://developer.apple.com/library/archive/documentation/GraphicsImaging/Reference/CIKernelLangRef/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004397-CH1-SW1文章目录一......
  • [题解]CF1741D Masha and a Beautiful Tree
    思路我们可以观察样例,不难发现:对于任意一段长度为\(2^k\)的区间中,如果最大值减最小值加\(1\)等于此区间的长度,那么一定有解。因为,我们的目标是使整个序列升序排列。因此,我们在一个区间内的最大值减最小值加\(1\)与区间长度是相等的。所以,我们可以用上述结论为判断无解的......