快速将视图约束到已转换的其他视图

问题描述

我有一个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)
}

这适用于我的大多数情况。但是我有一个viewtransform是这样的:

var transformerBumbleBee = CGAffineTransform.identity
transformerBumbleBee = transformerBumbleBee.translatedBy(x: 25,y: -80)
transformerBumbleBee = transformerBumbleBee.scaledBy(x: 1,y: 1)
self.addListButton.transform = transformerBumbleBee

使用此addListButton,我的showHightLightView()约束为identity-constraint的{​​{1}},而不是addListButton。有办法改变吗?

解决方法

transform不会将约束应用于其他视图,您需要通过更改约束的常量/乘数值来进行转换和缩放操作

,

不能将转换与约束一起使用,如果使用上面的代码,可能会收到一些与约束有关的运行时警告。

使用任何一种方法,只需在视图中以编程方式将视图添加为子视图并应用转换即可。