iphone – 如何找出UIViewController视图的确切框架?

iphone – 如何找出UIViewController视图的确切框架?,第1张

概述什么时候可以知道UIViewController视图的确切大小? 问题 我有一个多行UILabel,其框架取决于其文本和父视图的宽度.鉴于我需要在UILabel下面定位其他视图,重要的是使其框架覆盖文本的空间. 我目前在viewDidLoad上计算这样的大小: labelSize = [text sizeWithFont:font constrainedToSize:CGSizeMake(self 什么时候可以知道UIVIEwController视图的确切大小?

问题

我有一个多行UILabel,其框架取决于其文本和父视图的宽度.鉴于我需要在UILabel下面定位其他视图,重要的是使其框架覆盖文本的空间.

我目前在vIEwDIDLoad上计算这样的大小:

labelSize = [text sizeWithFont:Font constrainedToSize:CGSizeMake(self.vIEw.frame.size.wIDth,MAX_HEIGHT)];

问题是当UIVIEwController用作模态表单或d出框时,父视图的宽度会发生变化.如果我使用autoresizingMask,UILabel的框架会相应调整,但它不再适合文本.

知道UIVIEwController视图的确切大小,我在哪里可以计算出这个UILabel的框架?

调试努力

这是在将UIVIEwController显示为模态表单(UIModalPresentationFormSheet)时打印self.vIEw.frame的结果.

vIEwDIDLoad: (0.000000;0.000000;320.000000;480.000000)vIEwWillAppear: (0.000000;0.000000;768.000000;960.000000)afterDelay: (0.000000;0.000000;540.000000;576.000000)

产生上述输出的代码:

- (voID)vIEwDIDLoad {    [super vIEwDIDLoad];    [Utils logFrame:self.vIEw.frame tag:@"vIEwDIDLoad"];}- (voID) vIEwWillAppear:(BOol)animated {    [super vIEwWillAppear:animated];    [Utils logFrame:self.vIEw.frame tag:@"vIEwWillAppear"];    [self performSelector:@selector(afterDelay) withObject:nil afterDelay:0.1];}- (voID) afterDelay {    [Utils logFrame:self.vIEw.frame tag:@"afterDelay"];}
解决方法 那是因为你的UIVIEwController的根视图正在使用autoresizingMask.我不认为有一个“完美的时机”来检测你的UIVIEwController的根视图的大小,除非你覆盖你的根视图的’layoutSubvIEws’方法.

如果您不希望自动调整视图大小,请不要使用自动调整大小并自行设置大小,它将始终与您预期的大小相同.

如果您不确定您的根视图使用的是哪种autoresizingMasks,NSLog就是您的朋友.

总结

以上是内存溢出为你收集整理的iphone – 如何找出UIViewController视图的确切框架?全部内容,希望文章能够帮你解决iphone – 如何找出UIViewController视图的确切框架?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1082286.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存