我正在尝试使用我自己的自定义图像来表示我的工具栏按钮,但是,每当我将图像(png图像)设置为工具栏按钮的图像时,它只显示为白色框的大小我按钮上的图像。
以编程方式我尝试了这个:
bestButton.image = [UIImage imageNamed:@"best_off.png"];
其中bestButton是UIBarButtonItem
声明并设置为属性IBOutlet
。
但是,这也只是显示一个白色框,按钮应该在这里。
为了检查图像是否有焦点,我尝试了这段代码:
self.navigationItem.titleView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"best_off.png"]]autorelease];
在导航栏中正确设置我的标题视图以完美显示图像。
任何人都可以帮助确定为什么这个,以及我的所有其他图像在放入条形图按钮的图像时只显示为白框?
答案 0 :(得分:1)
工具栏中使用的图像永远不会显示。它们被用作掩模(我相信的alpha通道)。试试这个。创建一个透明背景的图标(png)。无论你有像素集,它都会在工具栏中显示的图标中显示为白色。
答案 1 :(得分:1)
我通过迭代工具栏中的所有条形项目以及那些作为按钮而不是空格的项目来实现这一点,我将customView设置为带有我的图像的新按钮,并连接相同的TouchUpInside我用于相应工具栏按钮的监听器。按钮甚至发光。图像必须是30x30。
如果你不介意看MonoTouch而不是Objective C,这里是代码。它可以很容易地翻译成Obj C.
void InitializeTbButtons (UIToolbar toolbar, string[] imageFilePaths, EventHandler[] buttonHandlers)
{
int i =0;
foreach (UIBarButtonItem item in toolbar.Items)
{
if ((item.Image != null) && (( i < imageFilePaths.Length) && (i < buttonHandlers.Length) ) )
{
UIButton btn = new UIButton( new System.Drawing.RectangleF(0,0,30,30) );
string filePath = imageFilePaths[i];
btn.SetImage( UIImage.FromFile(filePath), UIControlState.Normal );
btn.ShowsTouchWhenHighlighted = true;
EventHandler eventHandler = buttonHandlers[i];
btn.TouchUpInside += eventHandler;
item.CustomView = btn;
i++;
}
}
}
答案 2 :(得分:0)
您可以创建UIBarButtonItem的customView并分配给navigationItem。这是一个例子......
UIImage *bestImage = [UIImage imageNamed:@"best_off.png"];
UIImageView *bestView = [[UIImageView alloc] initWithImage:bestImage];
UIBarButtonItem *bestButton = [[UIBarButtonItem alloc] init];
bestButton.customView = bestView;
self.navigationItem.rightBarButtonItem = bestButton;