自动调整大小完成后如何获取框架大小

5

我想知道,如何在视图的frame尺寸被自动调整以适应其父视图时(在viewDidLoad、viewWillAppear、viewDidAppear中),获取该尺寸?

4个回答

1
从你的问题中并不清楚你为什么需要它,但我想这是为了布局你的子视图。幸运的是,苹果知道你会想要这样做,并实现了-(void)layoutSubViews方法,请参考:When is layoutSubviews called?

我在iPad上有一个webView,它加载一些本地的html代码来显示YouTube视频。包含播放器的html div需要与webView的大小相同。但是,由于我的webView是自动调整大小的,因此我需要访问其自动调整大小后的尺寸。然而,当记录框架时,我得到的是调整大小之前的尺寸。 - Jakob
让我感到困扰的是-(void)layoutSubViews方法,因为我需要子类化UIWebView,而我想避免这种情况。 - Jakob
我认为他的问题很明确,但我仍然找不到答案。 - Carlos Ricardo
子类化UIWebView并不是什么大问题,特别是当您只想访问框架时。 - Rog
layoutSubviews 会被调用多次,所以我不能使用它来创建一个带有最终 frameCGContext :/ - Brenden
显示剩余2条评论

0
- (void)viewDidAppear:(BOOL)animated {
    CGFloat uIViewWidth = self.uIView.bounds.size.width;
    CGFloat uIViewHeight = self.uIView.bounds.size.height;
    CGRect uIViewSize = CGRectMake(0, 0, uIViewWidth, uIViewHeight);
}

0

我尝试过 layoutSubviews,但它被调用了多次,这在我需要自动大小的框架以创建 CGContext 进行绘制时会出问题。

我使用的解决方法是在我的自定义 UIView 上公开一个 init 方法,让其父视图控制器在其 viewWillAppear 中调用。

我希望有一种方法可以在自定义 UIView 的实现中完成所有这些操作,但它使我困惑(还有 Google 和苹果的文档和 SO)。


-6
    NSLog(@"%f; %f; %f; %f;", yourView.frame.origin.x, yourView.frame.origin.y, yourView.frame.size.width, yourView.frame.size.height);

这是如何获取视图框架的方法


1
不回答困难的部分:何时。 - Rog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接