2011-12-14 8 views
15

ボタンを垂直に配置する方法を知っています。 hereを参照してください。しかし、私はプログラム的にそれを行うことはできません...これは私が試してみましたものの一つです:UIButtonの垂直方向の配置をプログラムで設定する方法 - iOS

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(10, 10, 110, 130)]; 
[button setTitle:@"Align" forState:UIControlStateNormal]; 
button.backgroundColor = [UIColor whiteColor]; 
button.titleLabel.textColor = [UIColor grayColor]; 
[button setContentVerticalAlignment:UIControlContentVerticalAlignmentBottom]; 

[self.view addSubview:button]; 

[button release]; 

私も...

をインセットを試してみました。しかし、アライメントは変更されません。

ボタンのカスタムスタイルを保持したい(デフォルトのルックアンドフィールを望んでいない)ことに注意してください。

答えて

1

が、私は持っている:これを試してみてください基本的な例があるので、もっと見るともっと複雑なバージョンが使えるはずです。おそらく、私は垂直方向の配置がうまくいかせるどのbutton.titleLabel.textColorのように使用しています他の方法があります...

更新 私のボタン(ボタンの高さ)が短すぎだったので、元の問題は、実際にしました。

The word `husband' is in the button

ワードhusband現在垂直下に位置合わせされるボタンです。しかし、ボタンの高さが十分ではないので、それは明らかではありません。タイトルインセットとコンテンツインセットのデフォルトはゼロですが、タイトルが底部と同じであるようには見えません。それは私に約5ピクセルのように見えます。私はこれが正しいことを確認するために小さなフォントでテストしました。

残念ながら縦に先頭にテキストを揃えることは何も変更していないようだ...

9

contentVerticalAlignmentです。どのようにボタンを作成しているのでしょうか。問題は、テキストを垂直方向に揃える

button.titleLabel.textColor = [UIColor grayColor]; 

の代わりに、他の場所で、私はまだトラブルを抱えています私のコードで

[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 

を使用していた

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
button.frame = CGRectMake(10, 10, 110, 130); 
// rest of your code 
// don't release button explicitly 
+0

私の質問に100%答えてください。しかし、私はあなたが私の心を読んでいないので、あなたに刻みを与えません...申し訳ありませんが、私はより良い質問を指定する必要があります。私はまた、カスタムタイプを保持したい。私はそれを反映するために私の質問を変更します。より良い答えが出てこない場合は、私はあなたにチックを与えます。乾杯。 –

+0

興味深いことに、(誤って)titleLabel(setTitleColorメッセージを送信するのではなく)にアクセスしてフォントの色を変更すると、これが機能しなくなる –

+0

これは問題とは関係ありませんが、ボタンを作成するのに 'buttonWithType' 。 'buttonWithType:UIButtonTypeCustom'を含むどのタイプでも問題ありません。 – XJones

1

あなたは簡単にUIButtonの内部テキストラベルを操作することができます。 ここではあなたがそれを行うことができる方法:@へ

  1. セットボタンのテキスト「」(空文字列)
  2. 新しいUILabelを作成し、それがのがそれだサブビュー
  3. として表示ボタンの内側にUILabelを作成したフレーム
  4. 挿入だ調整完了しました。今度は、内部で UILabelの位置をフレームプロパティを変更してプログラムで設定できます。あなたは(水平および垂直)このように、ボタンのテキストを整列することができます
18

 UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 200, 70)]; 
     button.backgroundColor = [UIColor whiteColor]; 
     button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
     button.contentVerticalAlignment = UIControlContentVerticalAlignmentBottom; 
     [button setTitle:@"Align" forState:UIControlStateNormal]; 
     [self.container addSubview:button]; 
+0

いいのですが、ボタンの画像を整列させることもできます。 –

0

を、私は私の作品より良い方法を発見しました。私はカスタムフォントを使用していますので、上記のlindon fox'sのようないくつかのアライメントが少しずれています。

インサイドあなたのUIButtonのサブクラス:私はUIControlContentVerticalAlignmentCentercontentVerticalAlignmentセットを使用しても良い考えであることを他の回答に同意

- (void)layoutSubviews { 

     [super layoutSubviews]; 

     if (UIEdgeInsetsEqualToEdgeInsets(UIEdgeInsetsZero, self.titleEdgeInsets)) { 

      // adjust top, left bottom, and right to fit your needs 
      self.titleEdgeInsets = UIEdgeInsetsMake(top, left, bottom, right); 
     } 
} 

関連する問題