移动到iOS 4.2后定位框架不起作用

时间:2010-12-01 23:16:45

标签: iphone objective-c cocoa-touch xcode ipad

我在移动视图时遇到了一些麻烦:

- (void)viewDidLoad {

    CGRect newFrame = self.popUp.view.frame;
    newFrame.origin.y = self.view.bounds.size.height;
    self.popUp.view.frame = newFrame;

    [[self view] addSubview:[self.popUp view]];

    [super viewDidLoad];
}

这应该将子视图popUp置于当前屏幕下方,但它似乎没有移动它。我几乎肯定这是4.2之前的工作。关于可能发生的事情的任何想法?对不起,模糊不清。如果您有任何问题,请随时提出。

2 个答案:

答案 0 :(得分:0)

您是否尝试将[super viewDidLoad]移至方法的顶部?你调用超类的方法可以影响继承的vars的状态。

关于此的好帖子:`[super viewDidLoad]` convention

答案 1 :(得分:0)

看起来你正在移动,所以popUp.view的顶部位于self.view的底部。然后,当您将popUp.view添加到self.view时,您将其置于self.view的“外部”。您可以newFrame.origin.y = self.view.bounds.size.height - 100;验证这一点,看看它是否显示。

您的观看次数没有像之前那样显示的一个原因可能是您已更改clipsToBounds。我想也可能是其他一些绘图优化正在进行,而不是绘制出边界且不可见的视图。

如果您希望弹出窗口显示在视图下方,我认为更好的方法是将弹出窗口放在视图的底部:

newFrame.origin.y = self.view.bounds.size.height - newFrame.size.height;

或将弹出视图放在self.view的超级视图中。在这种情况下,您可能希望处理superview控制器中的显示。