1

UIViewクラスで作成するカスタムがあります。次に、それを画面に追加します。それがCGRect. しかし、どうやら、この特定のサイズを取得できないようですUIView。これが私のコードです:

CGRect labelFrame;
        if (!tickerImage) {
            labelFrame = CGRectMake(upperTextField.frame.origin.x + 8, upperTextField.frame.origin.y, 0, 0);
        } else {
            labelFrame = CGRectMake(upperTextField.frame.origin.x + 16, upperTextField.frame.origin.y, 0, 0);
        }

        SGNewLabel = [[SGAdressLabel alloc] initWithFrame:labelFrame];
        [labelsArray addObject:SGNewLabel];
        [self.view addSubview:SGNewLabel];

        [SGNewLabel addNewLabelWithText:labelText andTickerImage:tickerImage];

        UIView *lastLabel = [labelsArray lastObject];
        CGRect newTextFieldFrame = CGRectMake(lastLabel.frame.origin.x + lastLabel.frame.size.width, labelFrame.origin.y, 320, 30);
        upperTextField.frame = newTextFieldFrame;

ご覧のとおり、 に入れても間違っているように見えるupperTextFieldカスタムのフレームに基づいてフレームを設定しました。将来のオブジェクトのサイズがわからないため、宣言の最後に設定しました。これが問題の原因です。SGNewLabelNSArray0, 0labelFrame

どうすればそれを修正して、UIView の適切なサイズを取得できますか?

編集:私のビューの NSLog は私にこれを与えます:

NSLog(@"The rect of object is: %@", NSStringFromCGRect(self.frame));
2013-02-11 17:16:02.333 MyApp[2383:c07] The rect of object is: {{24, 55}, {0, 0}}

本体は普通に描かれていUIViewて原寸大で見れます。

4

1 に答える 1

0

ラベルのフレーム セットを独自のクラスで使用する必要があった場合、コードは次のようになります。

SGNewLabel = [[SGAdressLabel alloc] init];
CGRect labelFrame;
        if (!tickerImage) {
            labelFrame = CGRectMake(upperTextField.frame.origin.x + 8, upperTextField.frame.origin.y, SGNewLabel.frame.size.width, SGNewLabel.frame.size.height);
        } else {
            labelFrame = CGRectMake(upperTextField.frame.origin.x + 16, upperTextField.frame.origin.y, SGNewLabel.frame.size.width, SGNewLabel.frame.size.height);
        }
SGNewLabel.frame = labelFrame;
于 2013-02-26T12:20:48.550 に答える