问题描述
我希望我的快速代码在完成对滑块的操作后结束滑块与对象pg的连接。因此,现在当您单击imageview pg然后使用滑块时,滑块将与imageview的大小相关。我想将iamgeview的大小控制为喜欢。在pg上按-然后在滑块上按并拖动滑块以达到所需的大小-当不触摸滑块时,您必须先触摸pg才能更改pg的大小。我在下面有一个gif,可以向您显示正在发生的事情。
import UIKit
var counter = 0
class ViewController: UIViewController {
var image1Width2: NSLayoutConstraint!
var image1Height2: NSLayoutConstraint!
var currentView: UIView?
var greenTransition: CGAffineTransform?
var slider = UiSlider()
var PG = UIImageView()
var btn = UIButton()
var jake = false
var btnCouter = 0
var g2 = UIPanGestureRecognizer()
var grid = UIImageView()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
slider.value = 0.5
PG.isUserInteractionEnabled = true
PG.image = UIImage(named: "c")
g2 = UIPanGestureRecognizer(target: self,action: #selector(ViewController.g1Method))
PG.addGestureRecognizer(g2)
[PG,slider,btn,grid
].forEach {
view.addSubview($0)
$0.translatesAutoresizingMaskIntoConstraints = false
}
let percent1 = self.view.frame.height * 0.1
//image12
image1Width2 = PG.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: 0.06)
image1Height2 = PG.heightAnchor.constraint(equalTo: view.heightAnchor,multiplier: 0.06)
NSLayoutConstraint.activate([
slider.bottomAnchor.constraint(equalTo: view.bottomAnchor),slider.heightAnchor.constraint(equalTo: view.heightAnchor,multiplier: 0.06,constant: 0),slider.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: 1,slider.leadingAnchor.constraint(equalTo: view.leadingAnchor,constant : 0),PG.topAnchor.constraint(equalTo: view.topAnchor,constant : percent1),image1Width2,image1Height2,PG.leadingAnchor.constraint(equalTo: view.leadingAnchor),])
slider.addTarget(self,action: #selector(hhh),for: .allEvents)
}
@objc func hhh() {
if jake == true {
if btnCouter == 1{
image1Width2.constant = CGFloat(slider.value) * view.frame.size.width * 0.10
image1Height2.constant = CGFloat(slider.value) * view.frame.size.height * 0.10
}
}
else{
image1Width2.constant = CGFloat(0.5) * view.frame.size.width * 0.10
image1Height2.constant = CGFloat(0.5) * view.frame.size.height * 0.10
}
}
@objc func handleTapGestured(_ gesture: UIPanGestureRecognizer) {
currentView = gesture.view
}
@objc func g1Method(_ sender: UIPanGestureRecognizer){
jake = true
btnCouter = 1
if jake == true {
guard let child = sender.view else{return}
let transitionPoint = sender.translation(in: self.view)
let newTransition = CGAffineTransform(translationX: transitionPoint.x,y: transitionPoint.y)
switch sender.state {
case .ended,.cancelled:// on End
if let existing = greenTransition {
greenTransition = newTransition.concatenating(existing)
} else {
greenTransition = newTransition
}
default://on change and other states
if let existing = greenTransition {
child.transform = newTransition
.concatenating(existing)
} else {
child.transform = newTransition
}
}
self.view.layoutIfNeeded()
}
}
override func touchesBegan(_ touches: Set<UITouch>,with event: UIEvent?) {
self.view.endEditing(true)
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)