- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在运行时更改某些 View 的 TopAnchor 约束。
约束创建:
self.buttonHStack.topAnchor.constraint(equalTo: cellHStack.bottomAnchor , constant: 20).activate(withIdentifier: "topAnchor")
extension UIView {
func getConstraint(withIndentifier indentifier: String) -> NSLayoutConstraint? {
return self.constraints.filter { $0.identifier == indentifier }.first
}
}
extension NSLayoutConstraint {
func activate(withIdentifier identifier: String) {
self.identifier = identifier
self.isActive = true
}
}
self.myStackView.topAnchor.constraint(equalTo: someView.bottomAnchor , constant: 20).activate(withIdentifier: "topAnchor")
但是当我试图获取它的引用时:
if let filteredConstraint = self.myStackView.getConstraint(withIndentifier: "topAnchor") {
//Edit here
}
它不会进入区 block
最佳答案
问题是您在错误的 View 上调用了 getConstraint
。当您激活 myStackView
和其他 View 之间的约束时:
self.myStackView.topAnchor.constraint(
equalTo: someView.bottomAnchor , constant: 20).activate(withIdentifier: "topAnchor")
...该约束属于 myStackView
和 someView
的公共(public) superview。所以当你说
self.myStackView.getConstraint(withIndentifier: "topAnchor")
... 它不存在。您正在寻找错误的约束 View 。
但是您的 getConstraint
方法(显然取自 here )是个好主意,所以让我们更正确(更优雅)地重写它,以便我们沿着 View 层次结构向上查找约束:
extension UIView {
func constraint(withIdentifier id: String) -> NSLayoutConstraint? {
return self.constraints.first { $0.identifier == id } ??
self.superview?.constraint(withIdentifier: id)
}
}
现在(当然要更改名称)即使您在 myStackView
上调用它,您的方法调用也会起作用。
关于swift - 获取 NSLayoutConstraint 标识符不适用于 topAnchor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57117191/
我已在 Xcode 项目中安装了 LBTAComponents 框架。现在我想将按钮放在页面顶部,以下是我的代码: button.anchor(view.topAnchor, left: view.l
我有几个 subview view.addSubview(collectionView) view.addSubview(pageControl) view.addSubvie
我想在运行时更改某些 View 的 TopAnchor 约束。 约束创建: self.buttonHStack.topAnchor.constraint(equalTo: cellHStack.bo
我正在做一个调查 iMessage 应用程序(是的,我知道)并且在演示模式之间移动时遇到问题。下面的一系列屏幕截图显示,当应用程序启动时,在紧凑模式下一切正常。展开后一切仍然正确,但当我返回压缩时,内
这个问题已经有答案了: TopLayoutGuide and BottomLayoutGuide Deprecated in iOS 11 (1 个回答) 已关闭 4 年前。 底部布局指南在 ios
我是一名优秀的程序员,十分优秀!