微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用 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 举报,一经查实,本站将立刻删除。