UIView在Swift中的方向更改
我正在开发一个显示二叉树的应用程序 每个节点将显示为从ViewController编程生成的子视图-我从viewDidLayoutSubviews()运行以下命令 问题在于,在方向更改时,视图会相互重复(上面有三个节点,在方向更改时可能会显示4) 我查看了堆栈,并在子类UIView中添加了:UIView在Swift中的方向更改,swift,uiimageview,Swift,Uiimageview,我正在开发一个显示二叉树的应用程序 每个节点将显示为从ViewController编程生成的子视图-我从viewDidLayoutSubviews()运行以下命令 问题在于,在方向更改时,视图会相互重复(上面有三个节点,在方向更改时可能会显示4) 我查看了堆栈,并在子类UIView中添加了: self.contentMode = UIViewContentMode.redraw 在Programmatic子视图中,但同样的情况也会发生 别担心-我稍后将在循环中生成节点(我试图了解布局是如何工作
self.contentMode = UIViewContentMode.redraw
在Programmatic子视图中,但同样的情况也会发生
别担心-我稍后将在循环中生成节点(我试图了解布局是如何工作的)。顺便说一句,我发现使用UICollectionView时也发生了同样的情况,因此我似乎在做一些根本错误的事情。将“目标:”更改为控制器(改为自身)对于这三种情况,控制器将响应手势,而不是视图本身。在这三种情况下,目标都是相同的
secondView.addGestureRecognizer(UIPinchGestureRecognizer(target:secondView, action:#selector(BinaryTreeView.changeScale)))
self.view.addSubview(secondView)
变成
secondView.addGestureRecognizer(UIPinchGestureRecognizer(target:self, action:#selector(BinaryTreeView.changeScale)))
self.view.addSubview(secondView)
谢谢-但手势效果很好。问题是方向改变和对象不能正常再生。你说你在方向改变时得到了额外的对象。那是因为你通过链接目标来链接识别器。你是否尝试将目标全部替换为self?行为改变了吗?如果我做出更改为self,然后单击一个对象,我发现一个崩溃。无法识别的选择器被发送到实例。这是因为您的选择器格式不正确。删除“(识别器:)”我假设您使用的是swift 3。仍然相同(它是不同的选择器):view.addgestureRecognitizer(uitagestureRecognitizer)(目标:self,操作:#选择器(BinaryTreeView.returnHead)))
secondView.addGestureRecognizer(UIPinchGestureRecognizer(target:self, action:#selector(BinaryTreeView.changeScale)))
self.view.addSubview(secondView)