1

インターフェイスビルダーに UILabel を配置してから、次のようにコードで座標を取得すると、理解するのに非常に苦労しています。

self.myLabel.frame.origin.x

UILabel を画面の中央に配置したにもかかわらず、常に 0 になるのはなぜですか? 正しい座標を取得するにはどうすればよいですか?

UILabel が UIScrollView に追加されています。UIScrollView は、iPhone 画面全体 320X480 をカバーします。UIScrollView は、インターフェイス ビルダーを通じて追加されます。

NSLog(@"%f",self.scrollView.bounds.size.height); returns 0
4

4 に答える 4

1

原点は常に親ビュー、あなたの場合はUIScrollView. のUIScrollView動作方法は、コンテンツの原点を固定できますが、コンテンツのサイズとオフセット (スクロール位置) が変更されると、異なる場所に表示されます。

さらに、 のサイズについて何も言わなかったUILabelので、テキストが中央に配置されていても、ビュー自体がはるかに大きい可能性もあります。

また、コードのどこで座標をチェックしているのかはわかりません。チェックするのが早すぎると、まだ設定されていない可能性があります。

于 2013-03-02T21:05:22.433 に答える
0

self.myLabel が nil ではなく、コードに正しく接続されていることは確かですか? また、ビューで alloc/init を使用するだけでなく、xib ファイルからビューをロードしていることも...

于 2013-03-02T21:09:54.830 に答える
0

ラベルがビューに追加される前にチェックしている可能性があります。実際に画面にラベルが表示され、値を確認できるときに、コードのどこかにブレークポイントを置いてみてください。

于 2013-03-02T19:10:35.437 に答える
0

以前の回答で問題が解決しなかった場合は、

ヘッダーに含まれている必要がある場合は、インターフェースビルダーのラベルをインターフェースヘッダーファイルの IBOutlet に接続してください。

@property (nonatomic,weak) IBOutlet UIlabel* myLabel;

このプロパティを使用して、インターフェースコネクタから正しく接続されました

于 2013-03-02T21:21:28.070 に答える