我想知道如何从头开始创建自定义 iPhone 控件,或者使用现有的库或框架。
我已经看到了 Three20 库,以及 Tapku 和 Touch Customs,它们对于专门的 iOS 控件(例如表格视图等)非常有用,但我在这里讨论的是制作完全自定义的交互式控件。
假设我想制作一个类似于此应用程序的拨号控件:http://store.apple.com/us/product/H2654LL/A http://store.apple.com/us/product/H2654LL/A.
我该从哪里开始呢?
- 我会继承 UIView 并自定义它吗?
- 我会使用石英 2d 吗?
- 我会使用 OpenGL ES 在屏幕上绘制这样的东西吗?
- 我仍然可以使用 IB 来设计/布局我的自定义视图吗?
我只是有点困惑该走哪条路。
是的 - 这个问题之前已经被问过并回答过几次,但我还没有找到解决上述问题的令人满意的答案。
子类化什么代替UIView
你可能想要子类化UIControl
。此类具有目标/操作模式构建的功能,您可以使用该功能来响应自定义控件生成的操作。 UIKit 上的大多数元素(例如按钮和滑块)都继承自UIControl
由于这个具体原因。
可视化你的子类绘图实际上取决于您想要实现的目标以及您想要为哪些部分制作动画。您可以根据您的需要或偏好使用图像、使用石英或 OpenGL 进行绘图。只要运用技巧,就能以最简单的方式达到想要的效果。多个图像可用于处理不同的状态(按下等)或用于精灵动画。 CALayers 很容易旋转或移动。
无论您使用什么技术,您都可能会使用传入的触摸事件来控制动画。例如,如果使用拨号控件,您可以根据 y 坐标移动来控制旋转量。
为了说明:例如,如果我的控件只需要在按下时更改,例如,我使用了图像:只需交换图像。我也喜欢用CALayer
很多,它为您提供了生成边框、蒙版、渐变和圆角半径的简单方法,所有这些都可以轻松制作动画。
在界面生成器中使用通过桌面上的 Cocoa,可以为自定义控件构建自定义 IB 调色板。 iOS 从来没有这个功能,而且我不认为 IB 插件可用于 Xcode 4。
因此,当前处理自定义子类的唯一方法是使用UIView
在 IB 中并设置“自定义类”字段身份检查员到您的自定义类的名称。这样您就有了可以布局和调整大小的视图。在 Interface Builder 中,它只是一个矩形,当运行您的应用程序时,XIB 实际上会将该视图反序列化为您的自定义类。
当使用UIControl
您免费获得目标/行动机制。因此,您可以将触摸事件连接到 IB 中的任何对象,就像任何其他标准 UIKit 控件一样。
需要注意的一件事:如果您有自定义- initWith....:
选择器,这些将不会被调用。您的类是从 XIB 反序列化的,因此您应该使用- initWithCoder:(NSCoder *)aDecoder;
作为初始化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)