使用自动布局删除并重新添加子视图

2023-11-27

使用自动布局时,我的理解是删除子视图(当然同时保留对它的引用),删除的子视图仍然知道其自动布局约束。

但是,当稍后将其添加回超级视图时,子视图不再知道其帧大小。 相反,它似乎得到了零帧。

我假设自动布局会自动调整其大小以满足约束。难道不是这样吗? 我认为自动布局意味着不要弄乱框架矩形。即使使用自动布局,添加子视图时是否仍然需要设置初始框架矩形?


删除子视图时,与该子视图相关的所有约束都将丢失。如果稍后需要再次添加子视图,则必须再次向该子视图添加约束。

通常,我在自定义子视图中创建约束。例如:

-(void)updateConstraints
{
    if (!_myLayoutConstraints)
    {
        NSMutableArray *constraints = [NSMutableArray array];

       // Create all your constraints here
       [constraints addWhateverConstraints];

       // Save the constraints in an ivar. So that if updateConstraints is called again,
       // we don't try to add them again. That would cause an exception.
       _myLayoutConstraints = [NSArray arrayWithArray:constraints];

       // Add the constraints to myself, the custom subview
       [self addConstraints:_myLayoutConstraints]; 
   }

   [super updateConstraints];
}

updateConstraints将由自动布局运行时自动调用。上面的代码位于您的自定义子类中UIView.

您是对的,在使用自动布局时,您不想触及框架大小。相反,只需更新约束updateConstraints。或者,更好的是,设置约束,这样您就不必这样做。

请参阅我对该主题的回答:

具有编程调整大小的自动布局 UIImageView 不遵循约束

您不需要设置初始框架。如果你使用initWithFrame,只需将其设置为CGRectZero。事实上,你的限制将会must- 详细说明某个东西应该有多大,或者意味着运行时可以推断出大小的其他关系。

例如,如果您的视觉格式是:@"|-[myView]-|",这就是水平维度所需的一切。自动布局会知道大小myView不超过父母的界限superview表示为|。它太酷了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用自动布局删除并重新添加子视图 的相关文章

  • [[NSMutableDictionary alloc] initWithObjects:...] 和 [NSMutableDictionary DictionaryWithObjects:...] 之间的区别?

    仍在学习 Objective C iPhone SDK 我想我知道为什么这不起作用 但我只是想确认一下 In awakeFromNib 如果我使用 NSMutableDictionary alloc initWithObjects 它实际上
  • Apple 如何在机场菜单打开时更新它? (当 NSMenu 已经打开时如何更改它)

    我有一个状态栏项目 可以弹出一个 NSMenu 并且我有一个委托集 并且它已正确连接 void menuNeedsUpdate NSMenu menu工作正常 也就是说 该方法设置为在显示菜单之前调用 我需要监听该方法并触发异步请求 稍后在
  • 如何将字符串从 Applescript 传递到 Objective C

    我正在开发一个应用程序 我需要能够传递一个字符串变量 from 苹果脚本 to 目标C 我已经弄清楚如何从 Objective C 类中的方法运行 Applescript 但我需要能够将 NSString 设置为 Applescript 中
  • 获取 Mojave 上的鼠标坐标

    我有一个非常基本的小命令行应用程序 可以在下次单击鼠标时获取鼠标坐标 import
  • 使用基于约束的布局自动调整 NSTokenField 的大小

    有没有办法自动调整大小height使用约束的 NSTokenField 保持宽度恒定 sizeToFit应该有效 但事实并非如此 如果我设置一个约束来保持宽度不变并调用此方法 它将忽略约束并仅调整宽度大小 当我想要的是仅调整高度大小时 基于
  • 确定 NSView 是否绘制的正确方法

    有没有正确的方法来确定是否NSView实际上是否在当前视图层次结构中绘制 考虑以下情况 视图完全在屏幕外 不是强制性的 该视图不在视图层次结构的顶部 The isHidden and isHiddenOrHasHiddenAncestor不
  • 使用 Cocoa 获取无法安装的驱动器列表

    我想获取在 OS X 下使用 Cocoa Objective C 无法安装 弹出的驱动器列表 我希望 NSWorkspace getFileSystemInfoForPath 能帮助我 NSArray listOfMedia NSWorks
  • 使用自动布局约束时如何获取视图的当前宽度和高度?

    我不是在谈论frame属性 因为从中你只能得到xib中视图的大小 我说的是当视图由于其约束而调整大小时 可能在旋转之后 或响应事件 有没有办法获取当前的宽度和高度 我尝试迭代其约束来寻找宽度和高度约束 但这不是很干净 并且在存在内在约束时会
  • 准确地从屏幕上的像素获取颜色并转换其颜色空间

    我需要从屏幕上的像素获取颜色并转换其颜色空间 我遇到的问题是 将值与数字色度计应用程序进行比较时 颜色值不相同 create a 1x1 image at the mouse position if let image CGImage CG
  • OS X Cocoa 自动布局隐藏元素

    我正在尝试使用新的自动布局 http developer apple com library mac documentation UserExperience Conceptual AutolayoutPG Articles Introdu
  • 如何正确释放附加 C 数组中的内存?

    我只是想弄清楚为什么下面的代码会泄漏内存 并且我有一种有趣的感觉 我没有正确释放数组内存 这是一个更广泛的 Objective C 应用程序中的 C 函数 我不是 C 语言的本地人 我尝试过在数组上使用 free 但有一种感觉这不是全部故事
  • 在谓词中使用@min

    我当前获取 min 或 max 值的版本是 for NSManagedObject destination in allSpecifics allRates addObject destination valueForKey rate NS
  • 获取 NSLayoutConstraints 关联视图

    我试图循环遍历视图约束 我向 view1 添加了 顶部 尾部 前导和高度约束 top trailing 和leading 是主ViewControllers 视图 如果我循环查看 view1 的约束 我只会看到高度约束 for constr
  • NSRunAlertPanel 显示在“活动窗口”后面

    我正在尝试整理一个简单的错误报告包 如果我的主程序崩溃 它会保存崩溃日志 然后启动报告程序 报告程序询问用户是否可以将崩溃日志发送给我 然后就这样做了 我正在使用 NSRunAlertPanel 创建一个基本消息框 由于某种原因 该消息框显
  • 如何设置 NSButton OSX 的背景颜色

    我想设置 NSButton 的背景颜色 属性检查器中没有任何内容 所以我想知道是否有任何方法可以以编程方式完成此操作 系统控件需要遵循 Apple 的外观和感觉 因此您无法轻松更改背景颜色 如果你想完成这个 你需要子类化 NSButton
  • 如何使用 NSWorkspace launchApplicationAtURL?

    我尝试使用以下命令运行 TextMate foo txt 的等效项在 URL 处启动应用程序 二进制文件的名称是 TextMate 我有一个参数 我尝试了以下代码 但它似乎不起作用 find the textmate NSURL bURL
  • 继承属性,从 readonly 继承的属性中读写时不会合成 setter

    我在使用属性时发现了一个奇怪的行为 该属性被继承为只读 然后在继承的类中重新声明为读写 In A h interface A NSObject property nonatomic strong readonly NSObject some
  • 辅助功能:ScrollView 自动滚动到点击“TAB”时不可见的视图

    有人可以让我知道当仅使用键盘的用户尝试使用 Tab 键在 ScrollView 中的不同 UI 元素之间导航时如何自动滚动滚动视图吗 当我按 TAB 键时 焦点会转移到滚动视图中存在的不同 UI 元素 但如果可见内容视图中不存在 UI 元素
  • 使用 NSTokenField 强制 NSPopover 不成为第一响应者

    我有一个 NSTokenField 并且在弹出窗口内提供自定义自动完成功能 不幸的是 一旦显示弹出窗口 它就会强制 NSTokenField 放弃第一响应者 有没有办法显示弹出窗口但不丢失 NSTokenField 上的第一个响应者 重写
  • C# 或 Windows 相当于 OS X 的 Core Data?

    我迟到了 现在才开始在 OS X Cocoa 中使用 Core Data 它令人难以置信 并且确实改变了我看待事物的方式 C 或现代 Windows 框架中是否有等效的技术 即拥有可免费保存 数据管理 删除 搜索的托管数据类型 还想知道Li

随机推荐

  • 依赖注入和单例设计模式

    我们如何确定何时使用依赖注入或单例模式 我在很多网站上读过 他们说 使用依赖注入而不是单例模式 但我不确定我是否完全同意他们的观点 对于我的中小型项目 我肯定会直接使用单例模式 例如记录器 我可以用Logger GetInstance Lo
  • 在 Python 中迭代一系列日期

    我有以下代码可以做到这一点 但我怎样才能做得更好呢 现在我认为它比嵌套循环更好 但是当你在列表理解中有一个生成器时 它开始变得 Perl one linerish day count end date start date days 1 f
  • 如何使用Spring 3.x开发https站点?

    我是基于 Spring 的 Web 开发的新手 我们的网站是基于 Spring 的 目前是基于 http 的 所以相当不安全 由于该网站尚未上线 我们也通过正常的 JSON 请求向服务器发送登录名 密码 并且主要关注 JSP UI 设计 S
  • 选择不使用表格的两个日期之间的所有日期(生成日期列表)

    有没有一种方法可以在不使用任何 MySQL 表的情况下获取两个日期之间的所有日期 就像是 SELECT date BETWEEN 2012 02 10 AND 2012 02 15 这会导致这样的结果 out put date list 2
  • 设计邀请批量邀请 - Ruby on Rails

    我正在尝试使用 Devise invitable 来一次添加多个用户 基本上 当有人创建帐户时 他们要做的第一件事就是使用可邀请的表单添加一堆用户 只是不确定如何复制表单中的字段并让他们为每个条目发送创建请求 提前致谢 我就是这样做的 提供
  • GROUP BY 由间隙分隔的连续日期

    假设你 在 Postgres 9 1 中 有一个像这样的表 date value 其中有一些间隙 我的意思是 并非 min date 和 max date 之间的每个可能日期都有它的行 我的问题是如何聚合这些数据 以便单独处理每个一致的组
  • 在基于 Debian 的系统上如何找到字体所对应的 Unicode 代码点?

    从基于 Debian 的系统上的脚本语言 例如 Python 或 Ruby 我想找到以下之一 特定字体具有字形的所有 Unicode 代码点 具有特定 Unicode 代码点字形的所有字体 显然 1 或 2 可以从另一个派生 所以无论哪个更
  • 从 C# 中的 List 中删除重复项

    有人有一种在 C 中对通用列表进行重复数据删除的快速方法吗 如果您使用 Net 3 则可以使用 Linq List
  • 如何在 JavaScript 中处理 ctrl+arrow ?

    I ve noticed an problem when trying to catch keyboard shortcut CTRL an arrow I ve handled keydown event Now when I hold
  • 拼接微芯片的显微镜图像

    因此 我正在尝试拼接微芯片显微镜拍摄的图像 但很难将所有特征对齐 我已经在两个相邻图像之间有 50 的重叠 但即使如此 它也并不总是很合适 我使用 SURF 和 OpenCV 来提取关键点并找到单应矩阵 但尽管如此 这还远远不是一个可以接受
  • 如何在我的 iPhone 应用程序中包含字体?

    我已经看过这个帖子了 我可以在 iPhone 应用程序中嵌入自定义字体吗 这很有帮助 但我想简单地通过以下方式加载字体 UIFont font UIFont fontWithName Harrowprint size 20 有些人报告说这是
  • 为什么在 JavaScript 中,'3 instanceof Number' == false,但 '3..method()' 会调用 Number.prototype.method?

    鉴于字面数字严格来说不是一个实例Number 为什么我可以调用原型方法Number or String or Boolean 对应文字对象上的对象 这是跨浏览器的标准行为吗 当这种情况发生时到底发生了什么 我怀疑它在调用方法之前将文字强制转
  • 如何多次执行存储过程

    我有一个存储过程 我像这样执行 exec sp storedProc 123 ME 333 NULL 我需要指定 400 个不同的值 如何同时执行具有不同值的存储过程 您可以尝试使用 CURSORS 来完成此操作 DECLARE param
  • 如何从Instagram公共访问API获取视频?

    我知道这个 api 可以获取图像 但是视频呢 https www instagram com username a 1 我能够获取视频的缩略图 但无法获取源或网址本身 当您进行上述 API 调用时 它将返回code在里面 看起来像这样 BW
  • 鼠标移动时淡入

    如何使用 JavaScript 在第一次鼠标移动时淡入 div 内容 例如在 google com 上 我不想让它再次消失 Code 查看实际效果 attach event handler document body onmousemove
  • 使用configurationmanager从多个web.config文件中读取

    背景 我有一些数据存储在大约 100 个 Web 应用程序的 web config 文件中 这些数据正在逐渐转移到数据库中 网页将显示 web config 数据 直到有人单击 编辑 链接 在这种情况下 他们将被重定向到一个网页 该网页将允
  • System.ArgumentException:复杂 DataBinding 接受 IList 或 IListSource 作为数据源

    我使用下面的 C 代码来填充 WinForms 列表框 但是我想隐藏所有系统文件夹 例如 RecyclingBin 但它给了我以下错误 System ArgumentException 复杂 DataBinding 接受 IList 或 I
  • 使用 vba 取消选择数据透视表中的所有项目

    有人可以快速解释如何取消选择新创建的数据透视表中的所有项目 以便我可以返回并仅选择一个或两个项目吗 我尝试了以下方法 PivotItems Select All Visible False Thanks 这可能是最接近您想要的 Dim i
  • 在 node.js 中运行 .wasm 文件

    我读过很多关于在 Node js 中运行 wasm 文件的文章 每当我测试代码时 它都会抛出此错误 TypeError WebAssembly instantiate Import 0 module wasi snapshot previe
  • 使用自动布局删除并重新添加子视图

    使用自动布局时 我的理解是删除子视图 当然同时保留对它的引用 删除的子视图仍然知道其自动布局约束 但是 当稍后将其添加回超级视图时 子视图不再知道其帧大小 相反 它似乎得到了零帧 我假设自动布局会自动调整其大小以满足约束 难道不是这样吗 我