如何像 Interface Builder 一样调整 iOS UI 组件的大小
Posted
技术标签:
【中文标题】如何像 Interface Builder 一样调整 iOS UI 组件的大小【英文标题】:How to Resize iOS UI component same as Interface Builder 【发布时间】:2013-10-03 06:59:48 【问题描述】:我正在开发一个 iOS 应用程序,在该应用程序中,用户可以在一个屏幕上拥有多个 UI component
。此外,用户可以拖动和重新定位这些组件。
现在,我希望用户通过手指触摸来调整所有 UI 组件 的大小(就像我们可以在 Interface Builder 中使用鼠标调整大小一样)。
编辑:
如上面 IB 的屏幕截图,我们可以用鼠标按住按钮周围的任何小方块并调整按钮的大小。我需要通过手指手势在我的应用程序中实现同样的事情(可能由 UIPanGestureRecognizer
)。
【问题讨论】:
【参考方案1】:我建议您在这些视图中添加捏合手势,以便用户进行缩放。
UIPinchGestureRecognizer *twoFingerPinch =
[[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scaleObject:)] autorelease];
[[self view] addGestureRecognizer:zoomGesture];
以及方法:
- (void)scaleObject:(UIPinchGestureRecognizer *)recognizer
NSLog(@"Object scale: %f", recognizer.scale);
并使用该比例更改对象大小。此外,您还可以使用其他手势,例如:
UITapGestureRecognizer UIPinchGestureRecognizer UIRotationGestureRecognizer UISwipeGestureRecognizer UIPanGestureRecognizer UILongPressGestureRecognizer【讨论】:
如果涉及到移动设备,捏是要走的路。我还建议检查两个手指是否在 UI 组件框架内。 我认为 UIPanGestureRecognizer 会更适合我的情况。 如果您考虑到 Apple 努力在每个应用中提供的用户体验,您不应该重新发明***并为移动应用使用经过验证的解决方案。【参考方案2】:如果您拒绝使用捏合识别器的解决方案。我建议为 UI 组件创建自定义包装器,这将在框架的角落和每一边的中间创建小方块。每个方块都应该有UIPanGestureRecognizer
来控制对象的大小。
【讨论】:
捏合手势在我的情况下是不合适的,因为它使用 2 指触摸并且通常用于放大/缩小。平移手势对我来说听起来不错。我会试一试,然后告诉你。【参考方案3】:各位,感谢Beautiful Example,我能够实现我想要的。 现在我可以轻松地放置编辑句柄并调整任何 UI 组件的大小。 在搜索了大约一周后,我得到了这个解决方案,所以想到了分享。
【讨论】:
以上是关于如何像 Interface Builder 一样调整 iOS UI 组件的大小的主要内容,如果未能解决你的问题,请参考以下文章
Xcode Interface Builder Style Guide - 如何添加颜色
如何为 iPhone 创建自定义 Interface Builder 插件?