2011-02-07 15 views
2

私は、基本的にiPhoneのホーム画面に表示されるボタンを模倣したボタンを作ろうとしています。画像がテキストの上に垂直に配置されていて、両方がボタンの一部であり、 、クリック可能など)を強調表示します。画像とテキストのUIButton

写真やテキストを自分のフレームに入れようとしましたが、新しいフレームのいずれかがボタンの残りの部分で薄暗くならないため、動作しません。

イメージをテキストの上に表示するため、背景イメージプロパティを使用できません。テキストの後ろの領域は透明にする必要があります。私は本当にすべての私の写真を編集する代わりに、プログラミングソリューションを好むだろう。

+0

:)行うのhttp://stackoverflow.com/a/11847383/1418457 – onmyway133

答えて

3

UIViewのサブクラスを作成し、UIImageViewとUILabelをサブビューとして使用し、コードを使用して適切に配置します。

あなたがそれらにアクセスできるようにするには、このように、プロパティとしてUIImageViewとUILabelを持っていると思います:

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

それとも、おそらくgithubのか何かで、インターネット上で、サードパーティのカスタムUIViewのを見つけることができます。

+0

私は、おかげでこれを試してみてくださいよ! – Mark

+0

これをまだ試してもらえませんでしたが、これは通常ボタンのように反応しますか? (ボタンがクリックされたときに画像とテキストの両方が「薄暗い」または「グレーアウト」になるでしょうか?)ボタンにUIViewの新しいサブクラスを取得する適切な方法は何ですか? – Mark

+0

自分で調光する必要があります。その可能性は、UIViewではなくUIButtonをサブクラス化できる可能性があります。 –

1

ジョナサンのアイデアは良いものですが、カップルのイメージでしかやっていないのであれば、それほど問題はありません。 UIImageUILabelを作成し、インタフェースビルダーのUIButtonの中に配置することができます。

でも、サブクラス化のような強力な機能について学ぶのは良い考えです。

幸運、

オーラムアクイラ

+0

ありがとう、しかし私はそれを "正しい"方法を試してみたい: – Mark

+0

...好奇心のうち、どのようにUIImageとUILabelをInterface Builder内のUIButtonに追加しますか? – Mark

+1

私はもっとはっきりしているはずです - あなたはイメージとラベルを作成し、その上にUIButtonを置いています。その後、UIButtonの種類をカスタムに変更します。それから、それはタッチイベントを受け入れますが、あなたはそれを見ることができません。 –

0

、新しい最初は透明なビットマップの描画コンテキストを作成して上から下へとテキストにあなたのイメージを描きます。この描画コンテキストから新しいイメージを作成し、その新しいイメージをボタンに使用します。

+0

彼は自分の画像を自分自身で編集し、ボタンが作成されるたびにそれを保存することもできます。 –

+0

テキストとイメージが独立している場合は事前編集できません。あるいは、膨大な数の画像がある場合。 – hotpaw2

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

をし、それが

+0

動作しません... –

関連する問題