ios – 如何为UIView添加大小调整手柄?

ios – 如何为UIView添加大小调整手柄?,第1张

概述我正在尝试通过用户请求在运行时动态创建视图(UI ImageView和UITextView),然后允许用户移动和调整它们的大小.除了调整大小外,我的一切都很棒.我尝试使用捏手势识别器,但发现它太笨拙我想要的东西.因此,我想使用尺寸手柄.我相信我可以在每个手柄上放置一个平移手势识别器,并在其中一个移动时调整视图框. 问题是,我不太确定如何创建大小调整手柄.我会说明我尝试过的所有事情,但说实话,我不太 我正在尝试通过用户请求在运行时动态创建视图(UI ImageVIEw和UITextVIEw),然后允许用户移动和调整它们的大小.除了调整大小外,我的一切都很棒.我尝试使用捏手势识别器,但发现它太笨拙我想要的东西.因此,我想使用尺寸手柄.我相信我可以在每个手柄上放置一个平移手势识别器,并在其中一个移动时调整视图框.

问题是,我不太确定如何创建大小调整手柄.我会说明我尝试过的所有事情,但说实话,我不太清楚从哪里开始.我确实有一些想法……

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添加大小调整手柄?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1049730.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存