Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 绘制自定义按钮的更好方法是什么?_Ios_Button_Core Graphics - Fatal编程技术网

Ios 绘制自定义按钮的更好方法是什么?

Ios 绘制自定义按钮的更好方法是什么?,ios,button,core-graphics,Ios,Button,Core Graphics,我需要在我的iPhone应用程序中有几个按钮(然后可以移植到iPad)。我至少知道两种制作此类按钮的方法: 1.使用通常的UIButton,将图像作为背景,可以在任何图形编辑器中绘制。 2.子类化UIButton并实现自己的drawRect:使用CoreGraphics工具的方法 我不知道为什么,但我倾向于使用第二个,因为它似乎更难,性能更低 我是否正确地认为,当以编程方式实现按钮绘图时,它会变成“跨平台”,这样您就不需要为不同的分辨率使用多个图标 如果这真的是一个简单的图标,一些贝塞尔曲线或圆

我需要在我的iPhone应用程序中有几个按钮(然后可以移植到iPad)。我至少知道两种制作此类按钮的方法: 1.使用通常的UIButton,将图像作为背景,可以在任何图形编辑器中绘制。 2.子类化UIButton并实现自己的drawRect:使用CoreGraphics工具的方法

我不知道为什么,但我倾向于使用第二个,因为它似乎更难,性能更低

我是否正确地认为,当以编程方式实现按钮绘图时,它会变成“跨平台”,这样您就不需要为不同的分辨率使用多个图标

如果这真的是一个简单的图标,一些贝塞尔曲线或圆充满了颜色。它的预成型速度会比图像按钮慢吗

有人知道有什么工具可以用图形界面来绘制矢量图像,然后将其转换成核心图形代码,然后粘贴到drawRect:方法中吗


谢谢。

不用担心使用drawRect。与Windows不同,iOS将结果缓存到位图中,并且仅当视图的尺寸发生变化时才会重新绘制它(这是您实际想要的,因为您希望再次缩放它)


对于矢量应用程序,您可以使用不透明度。它有一个将图标导出到CoreGraphics源代码的选项:

看看:哦!看起来棒极了。非常感谢这个链接。你也使用这个程序吗?我已经使用了试用版(在网站上,通过app store链接),当我有多余的钱时就会购买。谢谢链接。这是否意味着如果按钮使用背景图像,它将更频繁地重新绘制图像?或者区别只是在开始时:CG按钮是从代码中绘制的,图像按钮是从文件中读取的,但是在这之后,如果没有对按钮的尺寸进行任何更改,它们的行为方式是相同的:只是从缓存中重新生成位图?正确。UIView将在两种情况下重新绘制:显式调用setNeedsDisplay或调整大小且contentMode=UIViewContentModeRedraw。需要注意的是,仅调整UIView的大小不会生成对drawRect的调用,除非随后调用SetNeedsDraw或contentMode=UIViewContentModeRedraw。对于任何其他情况,操作系统将根据当前的contentMode简单地缩放缓存的位图。甚至都不好。试试Paintcode,谷歌一下。