Objective c 轮换及;挤压(缩放)手势会弄乱父视图及其子视图框架
我试图在包含多个子视图(UIButton、UITextView)的UIView上实现挤压和旋转手势。 为了您的方便,将代码组织在下面 我猜我错过了什么。不知道那是什么。谢谢大家! 结果: 代码 比例:Objective c 轮换及;挤压(缩放)手势会弄乱父视图及其子视图框架,objective-c,swift,uiview,uigesturerecognizer,scale,Objective C,Swift,Uiview,Uigesturerecognizer,Scale,我试图在包含多个子视图(UIButton、UITextView)的UIView上实现挤压和旋转手势。 为了您的方便,将代码组织在下面 我猜我错过了什么。不知道那是什么。谢谢大家! 结果: 代码 比例: var scaleAnchorPoint = CGPoint() func handleSizeIncreasing(sender:UIPinchGestureRecognizer) { if sender.state == UIGestureRecognizerSt
var scaleAnchorPoint = CGPoint()
func handleSizeIncreasing(sender:UIPinchGestureRecognizer) {
if sender.state == UIGestureRecognizerState.Began
{
print("Began")
scaleAnchorPoint = self.center
}
else if sender.state == UIGestureRecognizerState.Changed
{
txtView.transform = CGAffineTransformScale(txtView.transform, sender.scale, sender.scale)
sender.scale = 1.0
self.frame.size = CGSizeMake(txtView.frame.width + buttonSize, txtView.frame.height + buttonSize)
self.center = scaleAnchorPoint
updateViews(scaleAnchorPoint)
print("Changed")
}
}
轮换:
var rotateAnchorPoint = CGPoint()
func handleRotate(sender : UIRotationGestureRecognizer) {
if sender.state == UIGestureRecognizerState.Began
{
print("Began")
rotateAnchorPoint = self.center
}
else if sender.state == UIGestureRecognizerState.Changed
{
sender.view!.transform = CGAffineTransformRotate(sender.view!.transform, sender.rotation)
sender.rotation = 0
updateViews(rotateAnchorPoint)
print("Changed")
}
}
一方:
我明白了。简单地说,当缩放/帧发生变化时,不要像我在这里那样访问
帧
:self.frame.size=CGSizeMake(txtView.frame.width+buttonize,txtView.frame.height+buttonize)
访问self.bounds,如下所示-
self.bounds.size = CGSizeMake(txtView.frame.width + buttonSize, txtView.frame.height + buttonSize)
享受吧
self.bounds.size = CGSizeMake(txtView.frame.width + buttonSize, txtView.frame.height + buttonSize)