在 xib 和代码之间具有不同高度的 UIView

Posted

技术标签:

【中文标题】在 xib 和代码之间具有不同高度的 UIView【英文标题】:UIView with different height between xib and code 【发布时间】:2013-06-06 08:29:41 【问题描述】:

在我的应用程序的 iPad 版本中,我有一个 UIViewTPKeyboardAvoidingScrollView 的子视图,由 xib 创建,其框架为 (0.0, 1024, 437)。当您在输出框架中运行应用程序时,相应地变为(0.0, 1024, 800),其高度几乎是它应该具有的两倍。这是什么意思?我该如何解决?

代码:

   //self.scrollView is a TPKeyboardAvoidingScrollView

   CGFloat width = self.scrollView.frame.size.width;//is correct
   CGFloat progY = 0;

    self.view1.frame = CGRectMake(0, progY, width, 
                          self.view1.frame.size.height);
    [self.scrollView addSubview:self.view1];

    progY+= self.view1.frame.size.height;
   //is correct, the height is equal to that of the xib

    self.view2.frame = CGRectMake(0, progY, width, self.view2.frame.size.height);
    NSLog(@"the frame of view2 is %@", NSStringFromCGRect(self.view2.frame));
    //the frame of view2 is 0, 215, 1024, 800
    //the height would be 437 as in xib

    [self.scrollView addSubview:self.view2];

    progY+= self.view2.frame.size.height;//is wrong

    //....

【问题讨论】:

你如何/在哪里初始化UIView 如果您已经在 xib 中设置了,那么需要以编程方式更改框架。如果视图已经在 xib 中实现,我不希望更改框架。 UIView 已经在 xib 中实现了,我想保持相同的高度,而不是改变 【参考方案1】:

您的 XIB 中的基本视图可能具有错误的自动调整大小属性等。

在 Size Inspector 中查看基本视图的自动调整大小设置 - 它不应该连接到屏幕的下端,也不能动态改变高度,那么你就可以了。

【讨论】:

我检查了 Size Inspector 并且等于另一个视图,其中高度是正确的。有没有其他办法? 高度是正确的 - 但是自动调整大小图像中的红线呢?你看到三个垂直的红线了吗?如果您不希望尺寸调整到您将视图放入的容器视图中,那应该只有一个 - 从屏幕顶部到视图的顶部边框。 现在我找到了,尺寸检查器出错了。非常感谢 你是圣人!这个问题困扰我很久了

以上是关于在 xib 和代码之间具有不同高度的 UIView的主要内容,如果未能解决你的问题,请参考以下文章

如何从 ViewController 中的 xib (nib) 实例化 UIView / UITableView

使用 XIB 创建自定义 UIView

制作不同宽度和高度的 UIView 的 Circle

来自 XIB 的自定义 UIView 加载具有巨大规模的子视图

带有分离的 .h、.m 和 xib 文件的 UIView

使用自定义 uiview xib