8

ラベルを の中央に配置する最良の方法は何UIViewですか? 次のようなことをすると

UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(view.frame.origin.x / 2, view.frame.origin.y / 2, 50.0, 50.0)];

次に、ラベルの原点をビューの中心に設定しています。center プロパティを使用して、ビューの中心をそのポイントに設定することをお勧めします。そこで、次のコードを使用してみました。

UIView *aView = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
aView.backgroundColor = [UIColor darkGrayColor];
CGRect frame = aView.frame;

UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 125.0f, 30.0f)];
[aLabel setCenter:CGPointMake(frame.origin.x / 2, frame.origin.y / 2)];

これにより、左上隅のビューの境界のほとんど外側にあるラベルが生成されます。

4

2 に答える 2

18

あなたが間違っている主なことは、サイズの半分ではなく、元の値の半分を取ることです

ただし、この場合は計算する必要さえありません。次のようにするだけです。


UIView *aView = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
aView.backgroundColor = [UIColor darkGrayColor];

UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 125, 30)];
aLabel.center = aView.center;

(これらの座標を float に強制する必要はないことに注意してください。この場合、int として記述する方が読みやすいようです)。

また、これはスタイルの問題ですが、すでにプロパティ構文 ( aView.backgroundColor) を使用しているため、center プロパティにも使用できます :-)

于 2009-04-10T00:31:39.197 に答える
6

親の水平方向の中央に子を配置するには、その位置を次のように計算します。

childX = (parentWidth - childWidth) / 2

(これは身長にも当てはまります)。

于 2009-04-10T00:03:36.223 に答える