Swift 将视图限制为已转换的其他视图
Swift constrain view to other view that has been transformed
我有一个 highlightView
,我想 constraint
到另一个 view
。这是我的功能:
func showHighlightView(viewToHighlight: UIView, height: CGFloat) {
self.view.addSubview(highlightView)
highlightView.heightAnchor.constraint(equalTo: viewToHighlight.heightAnchor).isActive = true
highlightView.widthAnchor.constraint(equalTo: highlightView.heightAnchor).isActive = true
highlightView.centerXAnchor.constraint(equalTo: viewToHighlight.centerXAnchor).isActive = true
highlightView.centerYAnchor.constraint(equalTo: viewToHighlight.centerYAnchor).isActive = true
highlightView.layer.cornerRadius = height/2
highlightView.layer.add(self.scaleAnimation, forKey: "scale")
self.view.bringSubviewToFront(viewToHighlight)
}
这适用于我的大多数情况。但是我有一个 view
,我 transform
是这样的:
var transformerBumbleBee = CGAffineTransform.identity
transformerBumbleBee = transformerBumbleBee.translatedBy(x: 25, y: -80)
transformerBumbleBee = transformerBumbleBee.scaledBy(x: 1, y: 1)
self.addListButton.transform = transformerBumbleBee
有了这个 addListButton
,我的 showHightLightView()
被限制为 addListButton
的 identity-constraint
而不是 transformed
。有办法改变吗?
transform
不对其他视图应用约束,您需要通过更改约束的 constants/multipliers 值
来进行平移和缩放操作
转换不能与约束一起使用,如果您使用上面的代码,您可能会收到一些与约束相关的运行时警告。
使用任何一种方式,只需在视图中以编程方式将视图添加为子视图并应用转换。
我有一个 highlightView
,我想 constraint
到另一个 view
。这是我的功能:
func showHighlightView(viewToHighlight: UIView, height: CGFloat) {
self.view.addSubview(highlightView)
highlightView.heightAnchor.constraint(equalTo: viewToHighlight.heightAnchor).isActive = true
highlightView.widthAnchor.constraint(equalTo: highlightView.heightAnchor).isActive = true
highlightView.centerXAnchor.constraint(equalTo: viewToHighlight.centerXAnchor).isActive = true
highlightView.centerYAnchor.constraint(equalTo: viewToHighlight.centerYAnchor).isActive = true
highlightView.layer.cornerRadius = height/2
highlightView.layer.add(self.scaleAnimation, forKey: "scale")
self.view.bringSubviewToFront(viewToHighlight)
}
这适用于我的大多数情况。但是我有一个 view
,我 transform
是这样的:
var transformerBumbleBee = CGAffineTransform.identity
transformerBumbleBee = transformerBumbleBee.translatedBy(x: 25, y: -80)
transformerBumbleBee = transformerBumbleBee.scaledBy(x: 1, y: 1)
self.addListButton.transform = transformerBumbleBee
有了这个 addListButton
,我的 showHightLightView()
被限制为 addListButton
的 identity-constraint
而不是 transformed
。有办法改变吗?
transform
不对其他视图应用约束,您需要通过更改约束的 constants/multipliers 值
转换不能与约束一起使用,如果您使用上面的代码,您可能会收到一些与约束相关的运行时警告。
使用任何一种方式,只需在视图中以编程方式将视图添加为子视图并应用转换。