为什么我的自定义UIView
无法在其父级的UIView
容器中呈现?所以我拥有的是:
UIView
“customViewContainer
”(不占用整个屏幕),UIView
- 这里是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
”的边界之外
使用下面的代码,这现在有意义吗?这段代码的原因是我有一个自定义UIView
,但我有一个与之关联的XIB文件,所以这是让MainController
视图能够使用它的唯一方法。也就是说,在MainController
view
中有一个容器视图,然后以编程方式将CustomView
添加到容器视图中。
重新“所以设置你要添加的视图的框架或中心是你想要的” - 你是说我必须以编程方式/手动设置CustomView的尺寸是我想要的(相对于父容器View)?
我希望有一种方法可以使用声明布局设置来说明如何能够说“从它的XIB文件加载自定义视图,以及将此视图加载到self.containerView中的aspectFit”,但是我是开始怀疑这是否可能?
以下更新的代码(当我复制/粘贴并更改变量名称等原始问题时出错)
- (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];
}
答案 0 :(得分:24)
检查IB文件中父级的“剪辑子视图”属性是否已被选中。
我认为等效代码是self.view.clipsToBounds = YES
。
如果这是NO
,则在外部绘制的子视图将被显示,就好像它是在父项上绘制的一样。