如何通过点击图像来更新约束?对不起,不识字的讲话,我刚开始学英语,就像斯威夫特)我如何通过点击图像来更新约束,特别是高度和宽度。请参见下面的代码。我尝试设置高度和宽度变量的新值,当我点击图像时,我希望图像在实时中变得更大。但这不起作用。请帮助。P.S.请不要问我为什么需要它,只是训练,我知道我可以通过CGAfflinetransorm做什么...谢谢第一个
s6fujrry1#
正如Matt在评论中所说的,关键是始终与约束一起工作,而不是试图在视图中混合绝对维度。您可以将所有功能 Package 在视图中,而不是将手势识别器放在父视图中,尽管您需要将imageView约束到其父视图的尺寸(而不仅仅是其中心),以便更新图像大小也会更新父视图的尺寸以适应增长。您需要将图像大小的宽度约束存储为一个属性,以便可以在imageTap()方法中访问它。下面的示例假定图像始终为正方形,但如果不希望高度和宽度相等,可以用类似的方式存储和操作它们。
imageTap()
class View: UIView { let image = UIImageView() let inset = 0.0 var imageWidthDimension: NSLayoutConstraint! init() { super.init(frame:.zero) image.backgroundColor = .black image.image = UIImage(systemName: "circle")! translatesAutoresizingMaskIntoConstraints = false addSubview(image) let tap = UITapGestureRecognizer(target: self, action: #selector(imageTap)) image.addGestureRecognizer(tap) image.isUserInteractionEnabled = true image.translatesAutoresizingMaskIntoConstraints = false imageWidthDimension = image.widthAnchor.constraint(equalToConstant: 150.0) NSLayoutConstraint.activate([ image.leadingAnchor.constraint(equalTo: leadingAnchor, constant: inset), image.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -inset), image.topAnchor.constraint(equalTo: topAnchor, constant: inset), image.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -inset), imageWidthDimension, image.heightAnchor.constraint(equalTo: image.widthAnchor), ]) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } @objc func imageTap() { imageWidthDimension.constant = 250.0 image.updateConstraints() } }
1条答案
按热度按时间s6fujrry1#
正如Matt在评论中所说的,关键是始终与约束一起工作,而不是试图在视图中混合绝对维度。
您可以将所有功能 Package 在视图中,而不是将手势识别器放在父视图中,尽管您需要将imageView约束到其父视图的尺寸(而不仅仅是其中心),以便更新图像大小也会更新父视图的尺寸以适应增长。
您需要将图像大小的宽度约束存储为一个属性,以便可以在
imageTap()
方法中访问它。下面的示例假定图像始终为正方形,但如果不希望高度和宽度相等,可以用类似的方式存储和操作它们。