2011-06-30 12 views
0

私はまだレイアウトがCocoaでどのように振る舞うかでかなり新しいです。私はUIActivityIndi​​catorとUILabelを持つUIViewをそのサブビューとして持っているとします。 UILabelフレームはUIViewと同じ大きさで、textAlignmentが中央に設定されています。本文には「Loading xxx ...」と表示されます。ここで、xxxは文脈によって変化する文字列です。UIViewレイアウトの振る舞い

ここで、UIActivityIndi​​catorは、テキストの長さに関係なく、ラベルの左に常に配置されるようにするにはどうすればよいですか?テキストは中央揃えであることを忘れないでください。

Plz詳細が必要な場合はお知らせください。

+0

を配置するために、あなたのテキストUILabelの幅を計算し、その結果を使用することですか? –

+0

@チャンスいいえ、それは可変です。 – pixelfreak

答えて

1

これを実装するための簡単な方法は、生成された文字列は、常に3文字のでしょう、あなたのUIActivityIndi​​cator

// width & height of your activity indicator 
CGFloat wai = 20, hai = 20; 
CGSize textSize = [[label text] sizeWithFont:[label font]]; 
CGFloat w = textSize.width; 
CGFloat ax = ((WIDTH_OF_THE_DISPLAY - w)/2) - wai); 
activityIndicator.frame = CGRectMake(ax, (HEIGHT_OF_DISPLAY- hai) /2, wai, hai); 
+0

Thanks @Armentage!テキストが変更された場合、再計算して再配置する必要がありますか?もっと自動化された方法があるのだろうかと思っていました。 – pixelfreak

+0

UIKitでは、いいえ。ただし、ラベルのサイズを「大」に設定し、ラベルの中央にテキストを配置することで、似通った効果が得られます。 –

+0

@ヤン、私はあなたを取得していません。インジケータをテキストの左側に貼り付けるにはどうすればいいですか? – pixelfreak