为什么我的自定义UIView
没有在UIView
它的父容器中呈现?所以我所拥有的是:
- MainViewController - 有一个
UIView
“customViewContainer
”(不占据整个屏幕),并且 - CustomView - 是一个
UIView
带有 XIB 文件的文件 - 在UIView
这里,当它被渲染(使用 AspectFit)时,它正在渲染父级“customViewContainer
”的边界之外
用于设置自定义视图的代码是 MainViewController 的摘录:
<< cut - 请参阅下面的 Update2 >>
所以我看不出为什么CustomView
视图以比父级更大的方式呈现customViewContainer
?我想要的是完全按照类型方法customview
适合父“ ”。customViewContainer
AspectFit
谢谢
编辑1(添加说明)-如果我在父视图中“剪辑子视图”,那么它会剪辑东西,但我真正需要在父视图区域(而不是屏幕的整个区域)内呈现自定义视图。所以我需要(a)自定义视图的中心位于父视图的中心,以及(b)自定义视图 AspectFit 正确地放入父视图。有任何想法吗?
编辑 2 - 更新
抱歉 - 在原始问题中使用代码复制/粘贴错误 - 似乎无法编辑它,所以我将在下面放一个正确的版本 - 以便澄清:
MainViewController
- 有一个UIView
“ containerView
”(不占用整个屏幕),并且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];
}