gpt4 book ai didi

IOS 在 IOS 7 和 IOS 8 版本上给出了意外的宽度值

转载 作者:行者123 更新时间:2023-11-29 10:34:45 25 4
gpt4 key购买 nike

您好,我正在开发 IOS 应用程序。在我的应用程序中,我正在检查我的 View 的高度宽度 X 和 Y 值。在 IB 中,我使用具有右上左上和高度约束的自动布局。我没有指定宽度约束。在 viewDidLoad 中,我正在检查宽度高度 X 和 Y 的值。对于宽度值,它在 IOS8 上给出了意外的值,但在 IOS7 上它给出了适当的值(value)。对于 IOS7,它给了我预期的宽度 320,对于 IOS8,它给了我预期的 600。

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

我正在尝试做的是我试图以编程方式在先前存在的 View 上添加一个 View 。我按照以下方式进行了此操作:

 UIView *subView = [[UIView alloc] init];
subView.frame = _sampleView.frame;
[self.view addSubview:subView];

以上内容在 IOS7 上运行正常,但在 IOS8 上运行不正常。

如何解决这个问题。我做错了什么吗?需要一些帮助。谢谢。

最佳答案

在 Xcode 6 上, Storyboard以 600x600 的屏幕尺寸开始,因此在 viewDidLoad 上,由于 View 尚未根据屏幕调整大小,您仍然会得到该尺寸。

如果您想知道元素在屏幕上的大小,您需要在它们在屏幕上正确放置和调整大小后查看它们。您可以在 View Controller 的 viewDidLayoutSubviews 上进行检查。

-(void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];

NSLog(@"%f %f %f %f ", _sampleView.frame.size.height, _sampleView.frame.size.width, _sampleView.frame.origin.x, _sampleView.frame.origin.y);
}

但是,您不应该在该方法中添加任何 subview ,因为它会在布置您刚刚添加的 View 时再次触发自身,从而导致无限循环。仅将其用于确定 View 的正确大小。

如果你真的想在那个方法上添加一个 View ,使用一个控制 bool 值或类似的东西来确保你只做一次。

如果您想以更正确的方式添加 View ,您可以通过编程方式在您要添加的这个新 View 上添加一些自动布局约束,以确保它的行为与原始 View 相同。

有关如何以编程方式使用自动布局的教程,请参阅本文:http://www.thinkandbuild.it/learn-to-love-auto-layout-programmatically/

关于IOS 在 IOS 7 和 IOS 8 版本上给出了意外的宽度值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27689343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com