我想知道如何从头开始创建自定义iPhone控件,或者使用现有的库或框架。
我见过three20库,以及tapku和touch自定义,它们非常适合于特殊的iOS控件,例如表格视图等,但我在这里讨论的是完全自定义的、交互式的控件。
假设我想创建一个类似于此应用程序中的拨号控件:http://store.apple.com/us/product/H2654LL/A。
我该从哪里开始呢?
我只是有点不明白该走哪条路。
是的-这个问题以前已经被问了几次,但我还没有找到一个令人满意的答案来解决上述几点。
发布于 2011-04-13 23:12:53
什么是的子类化,而不是UIView
的子类化,你可能想要子类化UIControl
。这个类具有Target/Action模式构建的功能,在这个构建中,您可以使用它来响应由自定义控件生成的操作。由于这个特殊的原因,UIKit上的大多数元素,比如按钮和滑块,都是从UIControl
继承过来的。
可视化你的子类绘图实际上取决于你想要实现什么和你想要动画的部分。您可以使用图像,绘制使用石英或OpenGL根据您的需要或您的喜好。只需使用该技术以最简单的方式达到所需的效果。多个图像可用于处理不同的状态(按下等)或用于精灵动画。CALayers很容易旋转或移动。
无论使用哪种技术,您都可能会使用传入的触摸事件来控制动画。在使用拨盘控制的情况下,例如,您可以根据y坐标移动来控制旋转量。
举例说明:例如,我使用了图像,如果我的控件只需要在按下时更改,例如:只交换图像。我也很喜欢使用CALayer
,它可以让你轻松地生成边框,蒙版,渐变和角半径,所有这些都很容易动画化。
在界面生成器中使用在桌面上使用Cocoa可以为自定义控件构建自定义IB调色板。iOS从来没有这个功能,我也不认为IB插件可以在Xcode4上使用。
因此,目前处理自定义子类的唯一方法是在IB中使用UIView
,并将身份检查器中的“custom class”字段设置为您的自定义类的名称。这样你就有了一个可以布局和调整大小的视图。在Interface Builder中,它只是一个矩形,当运行你的应用程序时,XIB实际上会将该视图反序列化为你的自定义类。
使用UIControl
时,您可以免费获得目标/操作机制。因此,您可以将触摸事件连接到IB中的任何对象,就像使用任何其他标准UIKit控件一样。
需要注意的一件事是:如果您有自定义的- initWith....:
选择器,则不会调用这些选择器。您的类是从XIB反序列化的,所以应该使用- initWithCoder:(NSCoder *)aDecoder;
作为初始化。
发布于 2013-02-15 03:07:34
此外,http://www.cocoacontrols.com/platforms/ios/controls上的自定义控件也很少。它们是开源的,因此您可以下载源代码并使用它们。
https://stackoverflow.com/questions/4874172
复制相似问题