带图片和文字的UIButton

时间:2011-02-07 21:06:20

标签: iphone image ios text uibutton

我正在尝试制作一个基本上模仿iphone主屏幕上看到的按钮的按钮 - 它有一张垂直放置在某些文字上方的图片,两者都是按钮的一部分,表现得恰到好处(昏暗,可点击等)突出显示时。

我已经尝试将图片或文字放入自己的框架中,但这不起作用,因为新框架中的任何一个都不会与按钮的其余部分一起变暗。

使用背景图像属性不起作用,因为我希望图像位于文本上方 - 文本后面的区域应该是透明的。我真的更喜欢编程解决方案,而不是进入和编辑我的所有图片。

4 个答案:

答案 0 :(得分:3)

创建UIView的子类,并将UIImageView和UILabel作为子视图,并使用代码正确定位它们。

然后你将UIImageView和UILabel作为属性,以便你可以访问它们,如下所示:

myCustomButton.imageView.image = [UIImage imageNamed:@"..."];
myCustomButton.textLabel.text = @"...";

或者你可以在互联网上找到第三方自定义UIView,在github或其他东西。

答案 1 :(得分:1)

Jonathan的想法很好,但如果你只是用几张图片来做这件事,那就不值得了。您可以创建UIImageUILabel,然后将它们放在界面构建器中的UIButton中。

但是,了解子类化等强大功能总是一个好主意。

祝你好运,

Aurum Aquila

答案 2 :(得分:1)

这样做:

UIButton *btn_chat = [UIButton buttonWithType:UIButtonTypeCustom];
btn_chat.frame = CGRectMake(40, 50, 100, 30);//CGRectMake(20, 20, 200, 72);
UIImage *image = [UIImage imageNamed:@"chat.png"];
CGSize newSize = CGSizeMake(30, 30);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    
UIGraphicsEndImageContext();
[btn_chat setImage:newImage forState:UIControlStateNormal];
btn_chat.imageEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
[btn_chat setTitle:@"Chat" forState:UIControlStateNormal];
btn_chat.titleEdgeInsets = UIEdgeInsetsMake(0, 20, 0, 0);
btn_chat.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
[btn_chat addTarget:self action:@selector(menuSelection:) forControlEvents:UIControlEventTouchUpInside];
[btn_chat setTag:1001];
[self.view addSubview:btn_chat];

已经完成了:)

答案 3 :(得分:0)

创建一个新的初始透明位图绘制上下文,将图像绘制到顶部,将文本绘制到底部。然后从此绘图上下文中创建一个新图像,并将该新图像用于该按钮。