2012-03-29 52 views
0

我需要在我的iPhone应用程序中有几个按钮(可能会将它移植到iPad上)。我知道至少有两种制作这种按钮的方法: 1.使用通常的UIButton和图像作为背景,可以在任何图形编辑器中绘制。 2.继承UIButton并使用CoreGraphics工具实现自己的drawRect:方法。什么是绘制自定义按钮的更好方法?

我不知道为什么,但我倾向于使用第二个,因为它似乎更困难和更低的表现。

我是否正确地认为,以编程方式实现按钮绘图时,它变成了“跨平台”,因此不需要针对不同分辨率的多个图标?

如果这真的很简单的图标,一些贝塞尔曲线或圆形填充颜色。它仍会比图像按钮更慢吗?

是否有人知道任何具有绘制矢量图像的图形界面的工具,并将其转换为可粘贴到drawRect:方法的CoreGraphics代码?

谢谢。

+1

看一看:http://itunes.apple.com/gb/app/paintcode/id507897570 – hypercrypt 2012-03-29 22:16:28

+0

哦!这看起来很棒。非常感谢这个链接。你也使用这个程序吗? – BartoNaz 2012-03-29 22:23:43

+0

我已经使用了试用版(在网站上,通过应用程序商店链接),并在我有了这笔钱后就可以购买。 – hypercrypt 2012-03-29 22:27:21

回答

1

不用担心使用drawRect。与Windows不同,iOS会将结果缓存到位图中,并且只会在视图的维度发生变化时重新绘制(这是您真正想要的 - 因为您想再次缩放它)。

至于矢量应用程序,你可以使用不透明度。它可以将图标导出到CoreGraphics源代码中:http://likethought.com/opacity/

+0

感谢您的链接。这是否意味着如果按钮使用背景图片,它会更频繁地重绘图片?或者只是在开始处有所不同:CG按钮是从代码中获取的,并且图像按钮是从文件中读取的,但是之后如果没有对按钮的尺寸进行更改,则它们的行为方式相同:只是从位图缓存? – BartoNaz 2012-03-30 09:12:28

+1

正确。 UIView将在两种情况下重绘:显式调用setNeedsDisplay或调整大小时,以及contentMode = UIViewContentModeRedraw。重要的是要注意,调整UIView不会生成对drawRect的调用,除非通过调用setNeedsRedraw或在contentMode = UIViewContentModeRedraw时调用。对于任何其他情况,操作系统将根据当前contentMode简单缩放CACHED位图。 – 2012-03-30 15:07:05

相关问题