问题是,我不太确定如何创建大小调整手柄.我会说明我尝试过的所有事情,但说实话,我不太清楚从哪里开始.我确实有一些想法……
1)可能使用coregraphics在角落和边上绘制方框或圆圈?我会创建一个新图层并在其上绘制它们吗?不确定.
2)在每个角落贴上一个盒子或圆圈的小图像?
3)已放置手柄的XIB文件?
任何建议赞赏.我只需指向正确的方向.
编辑:像Apple在Pages中使用的东西是完美的!
解决方法 首先,我建议为UIVIEw创建一个自定义view子类,你将在这里处理所有的行为.我们称之为ResizableVIEw.在自定义视图中,您需要在角落处为这些点绘制图层或视图,并向其添加PangestureRecognized.然后,当用户拖动它们时,您可以使用recognizer.locationInVIEw()跟踪这些点的位置,您将使用它来计算VIEw.Were是您可以参考的代码:
func rotateVIEwPanGesture(recognizer: UIPanGestureRecognizer) { touchLocation = recognizer.locationInVIEw(self.supervIEw) let center = CalculateFunctions.CGRectGetCenter(self.frame) switch recognizer.state { case .Began: initialBounds = self.bounds initialdistance = CalculateFunctions.CGpointGetdistance(center,point2: touchLocation!) case .Changed: //Finding scale between current touchPoint and prevIoUs touchPoint let scale = sqrtf(float(CalculateFunctions.CGpointGetdistance(center,point2: touchLocation!)) / float(initialdistance!)) let scaleRect = CalculateFunctions.CGRectScale(initialBounds!,wScale: CGfloat(scale),hScale: CGfloat(scale)) self.bounds = scaleRect self.refresh() case:.Ended: self.refresh() default:break
一步步
触摸Pangesture的位置
center是ResizableVIEw的中心
initialBounds是PanGesture开始时ResizableVIEw的初始边界.
initaildistance是用户拖动的点的touchPoint的ResizableVIEw中心之间的距离.
然后,您可以计算给定的初始距离,中心,触摸位置的比例
现在,您可以根据需要缩放视图.你还需要在角落刷新这些点的位置,这就是refresh(),你需要自己实现它.
CalculateFunctions
我倾向于定义一些helpFunction来帮助我计算.
CalculateFunctions.CGPointGetdistance用于计算视图中心与触摸位置之间的距离.
CalculateFunctions.CGRectScale根据您刚刚计算的比例返回缩放的CGRect.
CalculateFunctions.CGRectGetCenter返回CGRect的中心点
这只是一个粗略的想法.实际上你可以参考很多图书馆.
一些建议:
> SPUserResizableView
这是一个ResizableVIEw正是你想要的,但它是用ObjC编写的,并且很长时间没有更新.但你可以参考它.
> JLStickerTextView这可能不太符合您的要求,因为它适用于文本(编辑,调整大小,用一根手指旋转)但是,这个是用Swift编写的,这是一个很好的例子.
如果您有任何疑问,请随时发布.好运:-)
总结以上是内存溢出为你收集整理的ios – 如何为UIView添加大小调整手柄?全部内容,希望文章能够帮你解决ios – 如何为UIView添加大小调整手柄?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)