使用 var 约束来增加任一前沿

问题描述

我正在尝试做的事情可以尝试通过下面的视频链接来解释。在下面的 gif 中,框中心没有改变,但是主锚会扩展。框只会从主角那里变大,它只会从主锚扩展。绿色代表扩张。下面的代码缩小了盒子。盒子不应该变小。

https://youtu.be/XyK8qfm_7Zw

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 (将#修改为@)