- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一些代码以编程方式创建自动布局约束,并将它们添加到 View 中。
有两种方法可以做到这一点 - 在 superView 上调用 addConstraints
,或者在每个约束上设置 .isActive = true
(在内部调用 addConstraint)
选项 1:
parent.addConstraints([
child.topAnchor.constraint(equalTo: parent.topAnchor, constant: 20),
child.leftAnchor.constraint(equalTo: parent.leftAnchor, constant: 5) ])
选项 2:
child.topAnchor.constraint(equalTo: parent.topAnchor, constant: 20).isActive = true
child.leftAnchor.constraint(equalTo: parent.leftAnchor, constant: 5).isActive = true
我的问题是,做一个比做另一个有什么好处吗? (性能/等)还是纯粹归结为风格。
(我认为在下一次布局传递之前不会评估约束,所以我认为我们逐个添加它们而不是在一个 block 中添加它们应该无关紧要??)
如果只是风格,社区“更喜欢”的风格是什么?
(我个人更喜欢 addConstraints,但它非常接近,我很容易被 .isActive 左右)
最佳答案
根据关于addConstraint:
的文档,建议为个别约束 设置active
属性。 (注意:active
属性仅适用于 iOS 8+)。
When developing for iOS 8.0 or later, set the constraint’s active property to YES instead of calling the addConstraint: method directly. The active property automatically adds and removes the constraint from the correct view. (reference)
此外,如果您查看 addConstraint:
的接口(interface)定义,它有这样的注释:
// This method will be deprecated in a future release and should be avoided. Instead, set NSLayoutConstraint's active property to YES
话虽这么说,实际上还有第三种 [可能更好] 的选择,即使用 NSLayoutConstraint
的类方法 activate:
:
NSLayoutConstraint.activate([
child.topAnchor.constraint(equalTo: parent.topAnchor, constant: 20),
child.leftAnchor.constraint(equalTo: parent.leftAnchor, constant: 5) ])
根据文档和接口(interface)文件,这也是推荐的方案。因此,如果您有多个约束,这将是一个简单的解决方案,并且可能更适合您的情况。
(界面评论;强调我的):
Convenience method that activates each constraint in the contained array, in the same manner as setting active=YES. This is often more efficient than activating each constraint individually.
关于iOS 约束样式 : addConstraints vs . isActive = true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39938900/
我正在为 iOS8 制作一个自定义键盘,在 Apple 开发者文档中它说您可以在屏幕上绘制初始主视图后随时更改自定义键盘的高度。它说要做到这一点,您应该使用 .addConstaint() 方法。 这
我在更新约束时遇到问题。 我使用这段代码添加约束。 var oldHeight = 92 + ((catAmount-10)*100) self.mainViewport.addConstraint(
问题 我似乎无法在现有项目中采用自动布局。 详情 我之前遇到过与这个问题相同的问题 presentViewController: crash on iOS ; layer = ; contentOff
我一直在 macOS 应用程序中使用 NSTouchBar 并想出了以下代码: func touchBar(_ touchBar: NSTouchBar, makeItemForIdentifier
如果这样做,我的代码可以正常工作 from constraint import * import itertools def main(): problem = Problem() x
我正在尝试为状态栏添加背景。 当我尝试将 VFL 约束添加到 self.window 时出现错误 unexpected interface name: 'NSLayoutConstratint' -
我是使用代码进行自动布局的新手。 addConstaints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-16-[v0]-16-|",opt
我遇到了一个问题,我不知道如何在某些特定 View 上使用没有 addConstraints 函数的旧函数 constraintsWithVisualFormat。 头文件说: This method
我有一些代码以编程方式创建自动布局约束,并将它们添加到 View 中。 有两种方法可以做到这一点 - 在 superView 上调用 addConstraints,或者在每个约束上设置 .isActi
我在 models.py 中有一个名为 FlashNews 的模型,它可以与 Race、League 或 FantasyTeam 相关联。我使用了 Django 的 CheckConstraint(版
我最近在 angualrjs 中使用 valdr 。我正在为我的应用程序使用 valdr 制作验证指令。我不想在 app.config 文件中使用 json 编写 addconstaints 和 ad
我有一个布局需要从模型的(间接)数据更新乘数。简而言之,我可以删除约束并从中创建修改后的约束。但是,当我尝试通过 addConstraint(...) 再次添加约束时,我得到了名义上的 EXC_BAD
这是我正在尝试的代码: @IBOutlet weak var btnInfo: UIButton! override func viewWillAppear(_ animated: Bool)
我在 addConstraint 中使用 constraintsWithVisualFormat 来创建自定义 header ,但我得到了: 请帮忙:( 最佳答案 尝试 headerLabel.add
我是一名优秀的程序员,十分优秀!