UIButton与图片和文字

我试图做一个button,基本上模仿在iphone的主屏幕上看到的button – 它有一个垂直放置在一些文本上方的图片,都是button的一部分,并突出显示时适当(暗淡,点击等)行为。

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

使用背景图像属性不起作用,因为我想要图像上方的图像 – 文本背后的区域应该是透明的。 我真的更喜欢编程解决scheme,而不是进入和编辑我的所有照片。

创build一个UIView的子类,并有UIImageView和UILabel作为子视图,并使用代码适当地定位它们。

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

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

或者你可能可以find第三方自定义的UIView,在互联网上的Github什么的。

乔纳森的想法是一个很好的想法,但是如果你只是用一对夫妇的形象来做这件事,那不值得麻烦。 你可以创build一个UIImage和一个UILabel ,然后将它们放在界面生成器的UIButton中。

不过,学习子类化等强大的function总是一个好主意。

祝你好运,

Aurum Aquila

做这个:

 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]; 

它已经完成:)

创build一个新的最初透明的位图绘制上下文,将您的图像绘制到顶部,将文本绘制到底部。 然后从这个绘图上下文创build一个新的图像,并使用该新图像作为button。