找到UIVIew的真实框架

时间:2013-02-11 13:09:02

标签: iphone ios objective-c cocoa-touch uiview

我在课堂上创建了一个自定义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的框架设置了SGNewLabel框架,这似乎是错误的,即使放入NSArray也是如此。我在0, 0声明的末尾设置labelFrame,因为我不知道未来对象的大小,这是我的问题的根源。

如何更正并获得正确尺寸的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本身正常绘制,我可以看到它是全尺寸的。

1 个答案:

答案 0 :(得分: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;