17

为什么我的自定义UIView没有在UIView它的父容器中呈现?所以我所拥有的是:

  • MainViewController - 有一个UIViewcustomViewContainer”(不占据整个屏幕),并且
  • CustomView - 是一个UIView带有 XIB 文件的文件 - 在UIView这里,当它被渲染(使用 AspectFit)时,它正在渲染父级“ customViewContainer”的边界之外

用于设置自定义视图的代码是 MainViewController 的摘录:

<< cut - 请参阅下面的 Update2 >>

所以我看不出为什么CustomView视图以比父级更大的方式呈现customViewContainer?我想要的是完全按照类型方法customview适合父“ ”。customViewContainerAspectFit

谢谢

编辑1(添加说明)-如果我在父视图中“剪辑子视图”,那么它会剪辑东西,但我真正需要在父视图区域(而不是屏幕的整个区域)内呈现自定义视图。所以我需要(a)自定义视图的中心位于父视图的中心,以及(b)自定义视图 AspectFit 正确地放入父视图。有任何想法吗?

编辑 2 - 更新

抱歉 - 在原始问题中使用代码复制/粘贴错误 - 似乎无法编辑它,所以我将在下面放一个正确的版本 - 以便澄清:

MainViewController- 有一个UIViewcontainerView”(不占用整个屏幕),并且CustomView- 是一个UIView带有 XIB 文件的 - 在UIView这里,当它被渲染时(带有AspectFit)正在渲染父级“ containerView”的边界之外

使用下面的代码,这现在有意义吗?这段代码的原因是我有一个 custom UIView,但我有一个与之关联的 XIB 文件,所以这是让我的MainController视图能够使用它的唯一方法。也就是说,在 中拥有一个容器视图MainController view,然后以编程方式将其添加CustomView到容器视图中。

重新“所以将您要添加的视图的框架或中心设置为您想要的”-您是说我必须以编程方式/手动将 CustomView 的尺寸设置为我想要的(相对于父容器视图)?

我希望有一种方法可以使用声明性布局设置来说明“从它的 XIB 文件加载自定义视图,并将 aspectFit 这个视图放入 self.containerView”,但是我开始怀疑如果这是可能的?

更新的代码如下(当我复制/粘贴它并更改变量名称等时在原始问题中犯了错误)

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Load the custom Altimeter View into this UIControllerView's container UIView for it
    NSArray *nibs = [[NSBundle mainBundle] loadNibNamed:@"Customview" owner:self options:nil];
    for (NSObject *obj in nibs) {
        if ( [obj isKindOfClass:[Customview class]]) {
            Customview *cv = (Customview*)obj;
            [self.containerView addSubview:cv];
            break;
        }
    }
    // UI Layout
    self.containerView.layer.borderWidth = 2;
    self.containerView.layer.borderColor = [[UIColor redColor] CGColor];
}
4

1 回答 1

24

检查是否检查了 IB 文件上父级的“剪辑子视图”属性。

剪辑子视图

我认为等效代码是self.view.clipsToBounds = YES.

如果是NO,则在外部绘制的子视图将是可见的,就好像它是在父级上绘制的一样。

于 2011-07-16T05:30:16.830 回答