gpt4 book ai didi

objective-c - 在代码中设置时,在 Interface Builder 中设置 UIImageView 相对于父 View 的框架位置会有所不同吗?

转载 作者:行者123 更新时间:2023-12-01 17:45:54 24 4
gpt4 key购买 nike

我有一个 View Controller 和一个 View 。然后我有一个通过 IB 创建的 UIImageView 并使用 IB Inspector 定位。将 UIImageView 的框架设置为 x 和 y 坐标为 0 会导致图像被放置在 View 的左上角,在状态栏下方。

如果然后我实现 View Controller 的 viewDidLoad 方法并使用以下方法设置 UIImageView 的框架位置:

myimageview.frame = CGRectMake(0, 0, 50, 50);

与 IB 中为 UIImageView 定义的坐标完全相同,图像在状态栏下方向上移动。似乎通过代码设置的坐标对窗口是真实的,而不是如图所示的父 View 。

有人知道为什么 IB 和代码之间存在差异吗?

一些有用的调试信息:

注意:Image View 的宽度和高度实际上是 35x37。上述尺寸只是为了简化原始问题。

在代码中设置之前的帧信息:
2011-03-15 13:15:34.249 MyAPP [98288:207] {{0, 49}, {35, 37}}

在代码中设置后的帧信息:
2011-03-15 13:15:34.250 MyAPP [98288:207] {{0, 0}, {35, 37}}

如 Interface Builder 中所定义:

Interface Builder

如您所见,IB 说 UIImageView X 和 Y 协调器是 0 ,0。虽然上面的调试信息说它实际上是 0, 49。

最佳答案

我从不使用界面生成器,所以这个答案可能是基于一些错误的假设,但希望我的假设是正确的。

我假设之前

myimageview.frame = CGRectMake(0, 0, 50, 50);
myimageview.frame将设置为您在界面生成器中设置的任何内容。我建议执行以下几行来查看您如何更改 frame属性(property):
NSLog(@"%@", NSStringFromCGRect(myimageview.frame));
myimageview.frame = CGRectMake(0, 0, 50, 50);
NSLog(@"%@", NSStringFromCGRect(myimageview.frame));

这应该可以帮助您找出差异。

顺便说一句,坐标总是相对于父 View 。

关于objective-c - 在代码中设置时,在 Interface Builder 中设置 UIImageView 相对于父 View 的框架位置会有所不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5311639/

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