【问题标题】:UIView positioning in IB of Xcode 4Xcode 4的IB中的UIView定位
【发布时间】:2011-11-24 13:39:56
【问题描述】:

考虑上面的屏幕截图。 UIView 位置太靠上导致上部测试字符串部分关闭,并且底部屏幕上显示了一个间隙。屏幕截图还显示了它在 IB 中对应的定位值:x = 0 和 y = 20。所以实际上有一个偏移量(y = 20)默认清除顶部状态栏。但是显示的状态栏仍然覆盖了部分 UIView。

x, y 条目显示为灰色,因此似乎无法更改其值。花了相当长的时间,但仍然无法解决这个看似简单的问题。希望熟悉这方面的人可以提供一些提示,说明应该如何完成。

更新:

已按照建议在代码中完成。它似乎工作正常。如果您发现任何错误,请告诉我...

- (void)viewDidLoad
{
CGRect  position_and_size;
CGPoint cg_point;
CGSize  cg_size;

[super viewDidLoad];

// setup after loading the view from its nib.

NSLog(@" --- Screen loaded --- ");

cg_size.width  = 320;
cg_size.height = 460;

cg_point.x =  0;
cg_point.y = 20;

position_and_size.origin = cg_point;
position_and_size.size   = cg_size;


[[self view] setFrame : position_and_size];

}

.

以下是最新截图:

【问题讨论】:

  • 尝试使用自动调整蒙版。或者在 viewDidLoad 方法中(在您的视图控制器中)调整视图框架以从 20 的偏移量开始 y 位置。
  • 不确定这是否是自动调整大小的蒙版。但我将“模拟指标”大小从无更改为“iPhone/iPod touch 全屏”,偏移量保持不变。
  • 您想在每次视图移出屏幕时自行计算 position_and_size 吗?请改用父视图的view.bounds 属性。
  • @Condor,感谢您的评论。但是从文档来看, bounds 是一个属性。所以我们需要至少指定一次。如果我错了,请纠正我。

标签: iphone cocoa-touch xcode4


【解决方案1】:

问题在于您将一个 460 像素高的视图放置在一个 480 像素高的窗口中 {0,0}。因此,视图的前 20 个像素最终位于状态栏下方,并且视图无法覆盖窗口底部的 20 个像素。您可以通过以下任何一种方式修复它:

  • 更改自动调整大小选项,以便自动调整视图大小以填满窗口。

  • 在代码或 IB 中调整视图大小以匹配窗口的边界。

  • 在代码或 IB 中将视图定位在 {0,20}。

【讨论】:

  • 感谢您的详细回答。将尝试您的建议,并且可能的重复链接也很有帮助。另外关于 {0, 20} 条目,我认为它已被设置为默认设置,如屏幕截图的左上角所示。
  • 刚刚尝试了自动调整大小选项,但无法使其正常工作。猜猜它应该可以按照您的建议在代码中完成。谢谢... :)
  • 如果您以编程方式执行此操作,您可能希望发布用于添加视图的代码。
  • 编码已发布,似乎可以正常工作。如果您发现任何错误,请告诉我。
【解决方案2】:

您可以通过编程方式修复它:

[yourSubView setFrame:self.view.bounds];

假设 self.view - 父视图,它应该适合的位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 2011-11-18
    • 2011-08-21
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多