UILabelをUIViewの中心にするにはどうすればよいですか?私は次のコードを使用しています
float width = weatherView.bounds.size.width;
float height = weatherView.bounds.size.height;
[self.label setFrame:CGRectMake(width-100,height-100, 100, 100)];
どうですか:
[self.label setCenter:view.center];
ラベルがビューのサブビューの場合:
[self.label setCenter:CGPointMake(view.frame.size.width / 2, view.frame.size.height / 2)]
ラベルとビューのスーパービューが同じでない限り、view.center
を使用しないでください。
直接の接続がない場合は、ビューの中心をラベルの親の座標空間に変換する必要があります。次に、変換されたポイントでPengOneの答えを使用できます。
既に設定されているラベルがあり、そのコンテンツを中央に配置する場合は、NSTextAlignmentCenterを使用します。
cell.menuLabel.textAlignment = NSTextAlignmentCenter;
より良い解決策は次のとおりです。
最初:これをプログラムで行う場合、フレームといくつかのカスタマイズで初期化する必要があります。
// Simple example
int yPosition = 10;
UILabel *label = [[UILabel alloc] initWithFrame: CGRectMake(0, yPosition, self.view.frame.size.width, 0)];
[label setText: @"Testing..."];
[label setBackgroundColor: [UIColor clearColor]];
[label setNumberOfLines: 0];
[label sizeToFit];
2番目:ラベルをセンタリングしようとしている場合、setNumberOflines
セレクターが呼び出され、0 value
が割り当てられ、テキストに必要なすべての行が含まれ、sizeToFit
メソッドが呼び出されて、適切なカスタマイズが行われ、最後に:
[self.label setCenter: CGPointMake(self.view.center.x, self.label.center.y)];
これにより、only the X axis
、 そしてその Y axis
は、フレームの初期化で必要なままになります。
PS:UILabel
ではないが、使用しているコントロールに依存する別の簡単なカスタマイズが必要な場合、またはどちらも必要ない場合、およびプログラムで中央に配置したいがinterface builder
設計されています。ただsecond code
。
PengOne/Alex Lockwoodの答えはシンプルで便利です。回転をサポートする場合は、以下を追加して中央に配置します。
[self.myLabel setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth];
UILabelが.xib経由で追加されるか、プログラムで追加される場合、2つの可能性があります。
最初のケースが.xibを介して追加された場合、 'Arrange'プロパティを使用してxibファイルサイズインスペクタータブから位置を設定できます。
2番目のケースが続く場合は、--- [self.label setCenter:view.center];として設定できます。
このような何かがトリックを行うはずです...ラベルが中央揃えに設定され、テキスト文字列を処理するのに十分な大きさ/幅であることを確認してください。
float viewWidth = weatherView.frame.size.width;
float viewHeight = weatherView.frame.size.height;
float labelWidth = label.frame.size.width;
float labelHeight = label.frame.size.height;
float xpos = (viewWidth/2.0f) - (labelWidth/2.0f);
float ypos = (viewHeight/2.0f) - (labelHeight/2.0f);
[label setFrame:CGRectMake(xpos,ypos,labelWidth,labelHeight)];
私はあなたが求めていることをやるべきだと思います。