如何像 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 - 如何添加颜色

Swift和Interface Builder中的单身人士

如何为 iPhone 创建自定义 Interface Builder 插件?

Interface Builder 找不到任何出口或操作

NavigationBar 在运行时隐藏视图,但不在 Interface Builder 中

如何使用 Interface Builder 设置 UIScreenEdgePanGestureRecognizer?