为 Interface Builder 创建自定义按钮

5

有人知道如何在Interface Builder中创建自定义按钮吗?比如,我想要一个自定义的3D按钮和一些随机图像背景,而不是只有普通的圆角矩形按钮。怎么做呢?


1
你确定你是在问如何使用Interface Builder本身来做这个,还是只想知道如何在xCode中实现这个功能?如果你完全跳过IB,你可以很容易地创建自定义按钮。 - MusiGenesis
@MusiGenesis 没错。如果没有IB调色板插件,您将无法在IB中看到效果(或配置除标准按钮可配置项之外的任何内容)。 - Joshua Nozzi
抱歉,也许我问错了,让我把这个问题简单化,我如何在Photoshop中创建自定义按钮并将其导入到Interface Builder? - PatrickGamboa
那是完全不同的问题。 :-) - Joshua Nozzi
3个回答

2
你需要找到第三方类(最好是带有Interface Builder插件的类,这样你就可以在IB文件中实时查看它),或者子类化UIButton或NSButton/NSButtonCell(Mac)并提供自己的3D彩虹独角兽绘制行为。 :-)
Interface Builder只能显示它知道的类 - 你不能在那里添加行为/修改现有的绘制行为,因为那是错误的工具。你需要在代码中找到其他人的类或子类化你自己的类,然后让IB知道它。
根据OP评论的更新:
你可以使用-setImage:forState:为给定的状态提供自定义图像。

1

在Interface Builder中这样做是非常复杂的(编写一个Interface Builder插件是一项非平凡的任务)。但是,您可以子类化UIControl(它只是一个UIView),并在子类中定义自定义绘图。

然后,在Interface Builder中,将您子类化的对象的类更改为您的新类,一切都应该正常工作。

相关阅读:


“在接口生成器里完成这个任务可能会很复杂。” 不,这是不可能的。接口生成器只能使用现有的类,如果控件有一个IBPalette插件,它允许你在IB的检查器中自定义现有的行为。 要教一个类新技巧需要在代码中创建子类。要教IB提供其新技巧的UI,需要IB调色板插件。 - Joshua Nozzi
这就是为什么我没有给出那个答案。答案是“子类化UIControl,这里有一些资源”。 - Dominic
我暗示他不想用那种方式并提供了一个替代方案。这并非不可能 - 它确实很麻烦,应该尽量避免。[编辑] 当然,在Xcode 4中是不可能的,但这不是问题的一部分。 - Dominic

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接