如何解决使用 var 约束来增加任一前沿
我正在尝试做的事情可以尝试通过下面的视频链接来解释。在下面的 gif 中,框中心没有改变,但是主锚会扩展。框只会从主角那里变大,它只会从主锚扩展。绿色代表扩张。下面的代码缩小了盒子。盒子不应该变小。
import UIKit
class ViewController: UIViewController {
var oldCons = [NSLayoutConstraint]()
var viewDrag = UIImageView()
var panGesture = UIPanGestureRecognizer()
var slider = UiSlider()
var leftc: NSLayoutConstraint?
var tim: CGFloat = 50.0
var slidermultiplier: CGFloat = 0.6
var counter = 0
override func viewDidLoad() {
super.viewDidLoad()
leftc = viewDrag.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: slidermultiplier)
[viewDrag,slider].forEach{
$0.translatesAutoresizingMaskIntoConstraints = false
view.addSubview($0)
}
slider.addTarget(self,action: #selector(increase),for: .valueChanged)
viewDrag.backgroundColor = .orange
viewDrag.isUserInteractionEnabled = true
viewDrag.addGestureRecognizer(panGesture)
oldCons = [
viewDrag.centerYAnchor.constraint(equalTo: view.centerYAnchor),viewDrag.leadingAnchor.constraint(equalTo: self.view.leadingAnchor,constant: tim),viewDrag.heightAnchor.constraint(equalTo: view.heightAnchor,multiplier: 0.3),//width
leftc!,]
NSLayoutConstraint.activate(oldCons)
slider.addTarget(self,action: #selector(sliderr),for: .valueChanged)
NSLayoutConstraint.activate([
slider.topAnchor.constraint(equalTo: view.topAnchor),slider.leadingAnchor.constraint(equalTo: view.leadingAnchor),slider.heightAnchor.constraint(equalTo: view.heightAnchor,multiplier: 0.1),slider.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: 1 ),])
slider.frame = CGRect(x: 200,y: 200,width: 100,height: 100)
}
@objc func increase() {
slidermultiplier = CGFloat(slider.value)
leftc?.isActive = false
leftc = viewDrag.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: slidermultiplier)
leftc?.isActive = true
}
@objc func b22() {
counter = 1
}
@objc func sliderr() {
NSLayoutConstraint.deactivate(oldCons)
oldCons = [
viewDrag.centerYAnchor.constraint(equalTo: view.centerYAnchor),viewDrag.trailingAnchor.constraint(equalTo: self.view.trailingAnchor,constant: -tim),leftc!,]
NSLayoutConstraint.activate(oldCons)
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。