【问题标题】:iPhone / iOS custom controliPhone/iOS 自定义控件
【发布时间】:2011-06-19 22:31:25
【问题描述】:

我想知道如何从头开始创建自定义 iPhone 控件,或者使用现有的库或框架。

我已经看到了three20 库,以及tapku 和touch custom,它们非常适合专门的iOS 控件,例如表格视图等,但我在这里谈论的是制作完全自定义的交互式控件。

假设我想制作一个类似于此应用程序中的拨号控件:http://store.apple.com/us/product/H2654LL/A

我该从哪里开始?

  • 我是否可以继承 UIView 并对其进行自定义?
  • 我会使用石英 2d 吗?
  • 我可以使用 OpenGL ES 在屏幕上绘制类似的东西吗?
  • 我仍然可以使用 IB 来设计/布局我的自定义视图吗?

我只是有点困惑该走哪条路。

是的 - 这个问题之前已经被问过并回答过几次,但我还没有找到一个满意的答案来解决上述问题。

【问题讨论】:

    标签: iphone ios opengl-es custom-controls


    【解决方案1】:

    http://www.cocoacontrols.com/platforms/ios/controls 上的自定义控件也很少。它们是开源的,因此您可以下载源代码并使用它们。

    【讨论】:

    【解决方案2】:

    子类化什么 而不是UIView,您可能想要继承UIControl。此类具有 Target/Action 模式构建的功能,您可以使用它来响应自定义控件生成的操作。出于这个特定原因,UIKit 上的大多数元素(如按钮和滑块)都继承自 UIControl

    可视化您的子类 绘图实际上取决于您想要实现的目标以及您想要动画的部分。您可以使用图像、使用石英或 OpenGL 进行绘制,具体取决于您的需要或您喜欢什么。只需使用该技术以最简单的方式达到预期的效果。多个图像可用于处理不同的状态(按下等)或用于精灵动画。 CALayers 很容易旋转或移动。

    无论您使用什么技术,您都可能会使用传入的触摸事件来控制动画。例如,在拨号控制的情况下,您可以根据 y 坐标移动来控制旋转量。

    为了说明:例如,如果我的控件只需要在按下时进行更改,我就使用了图像:只需交换图像。我也很喜欢使用CALayer,它为您提供了简单的方法来生成边框、蒙版、渐变和圆角半径,所有这些也很容易制作动画。

    在界面生成器中使用 使用桌面上的 Cocoa,可以为自定义控件构建自定义 IB 调色板。 iOS 从来没有这个功能,我不认为 IB 插件可用于 Xcode 4。

    因此,目前处理自定义子类的唯一方法是在 IB 中使用 UIView 并将 Identity Inspector 中的“自定义类”字段设置为自定义类的名称。这样你就有了一个可以布局和大小的视图。在 Interface Builder 中,它只是一个矩形,在运行您的应用程序时,XIB 实际上会将该视图反序列化为您的自定义类。

    使用UIControl 时,您将免费获得目标/动作机制。因此,您可以将触摸事件连接到 IB 中的任何对象,就像使用任何其他标准 UIKit 控件一样。

    需要注意的一点:如果您有自定义 - initWith....: 选择器,则不会调用这些选择器。您的类是从 XIB 反序列化的,因此您应该使用 - initWithCoder:(NSCoder *)aDecoder; 作为初始化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 2010-12-19
      相关资源
      最近更新 更多