我搜索过的所有主题在Obj-c中都已过时或未完成。
我需要学习如何在InterfaceBuilder中使用实际按钮时以编程方式更改按钮的背景图像。 (这听起来很奇怪,但我需要它NSCollectionView
,因为我有许多类似的按钮和不同的背景图像。)
在界面构建器中,我将一个按钮拖到我的视图窗口,我该怎么办?
我理解:
答案 0 :(得分:2)
您是否已将按钮连接到IBOutlet属性?如果是这样,那么你需要做的就是使用[button setImage:]
如果您还没有这样做,请确保您要更改图像的对象实例位于界面构建器中,即已将其作为其中一个蓝色框放入。然后,如果您设置了对象的类并在头文件中有一个IBOutlet属性,您只需将outlet按钮中的按钮插座(看起来像一个箭头)拖动到实际按钮本身即可链接两个
编辑:所以您似乎在按钮的实际连接部分出现问题?有可能你的IB文件看起来有点像这样:
在左侧列表中查找对象部分。这些是您可以将按钮连接到代码中的实际对象。您可能会在其中看到应用程序委托对象,该对象包含在首次创建项目时生成的默认IB文件中。如果要在应用程序委托中处理图像更改,只需将此属性添加到AppDelegate.h文件以创建插座:
@property IBOutlet NSButton *button;
如果您返回界面构建器并选择应用委托对象,则可以在插座选项卡下看到刚刚创建的插座:
将小圆圈的东西拖到按钮上进行连接,这应该是最简单的一点。
但我只是假设你想从你的应用代表以外的其他地方调用它,为此我们需要做更多的解释。如果要从中调用它的类是NSView的子类,并且已经在您的界面构建器中,则只需将该行添加到视图的头文件中,它就会出现在查看此插座标签。
如果你想从另一个不是视图的对象中调用它,你需要做两个选择:
alloc] init];
等正常创建,而是必须实际将对象拖入界面构建器。这可能会更改对象的结构,因为您无法再随意创建它,因为无论何时加载.nib文件,它都会自动实例化。另外需要注意的是,您的init
功能将不再被调用,您需要使用awakeFromNib
代替。如果您选择沿着这条路线行驶,只需拖动一个物体:
将您的outlet属性添加到头文件中:
设置对象的类:
连接插座:
答案 1 :(得分:2)
对于iOS:
不需要创建NSButton子类。
您只需在Storyboard上添加按钮,设置按钮的IBOutlet属性(ctr +从按钮拖动到视图控制器),然后设置背景图像:
[myButton setBackgroundImage:[UIImage imageNamed:@"ImageName"] forState:UIControlStateNormal]
对于MacOS:
您可以使用
setImage:
在Apple Doc上描述,并更改其大小/位置
(抱歉我的英语不好)
答案 2 :(得分:1)
UIImage* Desired_Image=[UIImage imageNamed:@"yourimage.png"];
[My_Button setimage:Desired_Image forState:UIcontrolstateNormal];
HTH!快乐编码:)