0

画面にラベルを配置する位置を計算しようとしています。目標は、最初の正方形ブロックの右下隅に「単語」ラベルを配置することです

黄色がかった正方形が次のように定義されている場合

myView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 70, 70)];
[self.view addSubview:myView];
[myView setBackgroundColor:[UIColor colorWithHexString:@"FFFFEC"]];

それを使用して、ラベルを右下隅に配置したいと思います

l1 = [[UILabel alloc] init];
[l1 setText:@"word"];
[l1 setFrame:CGRectMake(myView.frame.origin.x + myView.frame.size.width, 
                        myView.frame.origin.y + myView.frame.size.height,
                       700, 700)];
[l1 setFont:[UIFont fontWithName:@"Arial" size:10.0]];
[l1 setBackgroundColor:[UIColor colorWithHexString:@"CCFFFEC"]];
[l1 setTextAlignment:UITextAlignmentRight];
[l1 sizeToFit];

これが起こることです:

ここでの問題は明らかに、正しいオフセットにあります。テキストのフォントとサイズを知っていて、どうすれば正確に計算できるでしょうか?

ここに画像の説明を入力

4

1 に答える 1

1

UIView の原点は左上隅にマップされます。あなたが抱えている問題は、ラベルのフレームを計算する方法に関連しています。sizeToFit を呼び出した後にフレームを計算して、ラベルの幅と高さを変更した後に適切な場所に配置されるようにする必要があります。

呼び出した後にこれを呼び出す必要があります[l1 sizeToFit];

[l1 setFrame:CGRectMake((myView.frame.origin.x + myView.frame.size.width)-li.frame.size.width, 
                            (myView.frame.origin.y + myView.frame.size.height)-l1.frame.size.height,
                           l1.frame.size.width, l1.frame.size.height)];

スーパービューの幅とその x 原点からラベルの幅を引き、高さを使用して y 軸で同じことを行います。そうすれば、ビューの左上が正しい場所に配置されます。

于 2012-06-15T21:24:01.793 に答える