2011-02-07 81 views
2

我試圖做一個按鈕,基本上模仿iphone的主屏幕上看到的按鈕 - 它有一個垂直放置在一些文本上方的圖片,並且都是按鈕的一部分,行爲適當(暗淡,可點擊等)。UIButton與圖片和文字

我已經嘗試將圖片或文本放入其自己的框架,但不起作用,因爲無論在新框架中不會與其餘的按鈕變暗。

使用背景圖片屬性不起作用,因爲我想要圖片上方的文字 - 文字背後的區域應該是透明的。我真的更喜歡編程解決方案,而不是進入和編輯我的所有照片。

+0

看到這個答案http://stackoverflow.com/a/11847383/1418457 – onmyway133 2014-12-19 03:07:28

回答

3

創建UIView的子類,並將UIImageView和UILabel作爲子視圖,並使用代碼正確定位它們。

你會再有UIImageView的和的UILabel作爲屬性,讓你可以訪問它們,就像這樣:

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

或者你也許可以找到一個第三方自定義的UIView,在互聯網上GitHub上什麼。

+0

我會試試這個,謝謝! – Mark 2011-02-07 21:45:40

+0

還沒有得到嘗試這個,但會這樣反應就像一個按鈕通常? (當按鈕被點擊時,圖像和文本都會「變暗」或「變灰」)?將UIView的新子類獲取到按鈕中的正確方法是什麼? – Mark 2011-02-07 23:26:11

+0

你必須自己調暗。它可能你可以繼承UIButton而不是你可能不需要的UIView。 – 2011-02-08 08:07:33

1

喬納森的想法是一個很好的想法,但如果你只是與一對夫婦的圖像做它不值得的麻煩。您可以創建一個UIImage和一個UILabel,然後將它們放置在界面構建器的UIButton中。

不過,學習強大的功能(如子類化)總是一個好主意。

祝你好運,

奧羅拉奎拉

0

創建一個新的開始透明位圖繪圖環境,繪製圖像的頂部和文本的底部。然後從這個繪圖上下文創建一個新圖像,並使用該新圖像作爲按鈕。

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

它完成:)