从共同中心一起旋转UIViews组
这是对这个问题的跟进。 我有一个类似的设置与n个视图,我想与旋转手势一起旋转它们。
我知道如何将旋转应用于单个视图,但在这里我想将它们全部从公共中心旋转而不是自己的旋转。
所以我尝试了这种方法
- 计算所有选定视图的公共中心点
- 设置指向此公共中心的视图转换
- 并旋转视图
所以这就是我得到的
CGPoint newCenter =CGPointZero; for(UIView *node in self.selectedNodes){ newCenter = CGPointMake(newCenter.x + node.center.x, newCenter.y + node.center.y); } newCenter = CGPointMake(newCenter.x/self.selectedNodes.count, newCenter.y/self.selectedNodes.count); for(UIview *node in self.selectedNodes){ CGAffineTransform newTransform = CGAffineTransformMakeTranslation(groupCenter.x,groupCenter.y); newTransform = CGAffineTransformRotate( node.transform,recognizer.rotation); newTransform = CGAffineTransformTranslate(newTransform,-groupCenter.x, -groupCenter.y); node.transform = newTransform; }
但这不符合预期。 任何帮助深表感谢..
又是我。 这是我做旋转的方式:
let rotation = recognizer.rotation recognizer.rotation = 0 let center = views.map { $0.center }.reduce(CGPoint.zero, +) / CGFloat(views.count) views.forEach { $0.transform = $0.transform.rotated(by: rotation) let distance = $0.center - center $0.center = center + CGPoint( x: distance.x * cos(rotation) - distance.y * sin(rotation), y: distance.y * cos(rotation) + distance.x * sin(rotation) ) }
它与刻度非常相似,您获得所有视图的中心,对于每个视图,您获得到该中心的距离,使用公式旋转它以旋转点,并将旋转的距离添加到所有视图的中心。
- 如何将多个项目添加或导入到使用Swift保存在Documents Directory中的文件?
- 点击导航控制器中的SearchResultTableView行后,无法显示目标场景
- 在UICollectionView上从右到左alignment
- 核心数据:为什么必须调用重新加载数据才能使我的应用运行?
- iOS Swift MapKit自定义注释
- 如何检查一个NSString是否包含NSArray中的一个NSString?
- 如何区分UITableView自定义部分点击和部分第一行点击?
- iOS应用程序在Xcode中设置断点时崩溃
- 将managedObjectContext传递给UITabBarController的视图