Iphone 为什么我的UIView子视图不在父视图中呈现?(附代码)
为什么我的自定义Iphone 为什么我的UIView子视图不在父视图中呈现?(附代码),iphone,ios,uiview,uiviewcontroller,addsubview,Iphone,Ios,Uiview,Uiviewcontroller,Addsubview,为什么我的自定义UIView不能在其父对象的UIView容器中呈现?因此,我得到的是: MainViewController-具有UIView“customViewContainer”(不占用整个屏幕),以及 CustomView-是一个带有XIB文件的UIView,它是在父级“customViewContainer”的边界之外渲染的UIView 用于设置自定义视图的代码是MainViewController的以下摘录: > 因此,我不明白为什么CustomView视图的呈现方式比父视图cu
UIView
不能在其父对象的UIView
容器中呈现?因此,我得到的是:
- MainViewController-具有
“UIView
”(不占用整个屏幕),以及customViewContainer
- CustomView-是一个带有XIB文件的
,它是在父级“UIView
”的边界之外渲染的customViewContainer
UIView
CustomView
视图的呈现方式比父视图customViewContainer
的面积更大?我想要的是customview
完全按照AspectFit
类型方法装入父级“customViewContainer
”
谢谢
编辑1(添加了说明)-如果我在父视图中“剪裁子视图”,那么它会剪裁东西,但我真正需要的是在父视图区域(而不是整个屏幕区域)中渲染自定义视图。因此,我需要(a)自定义视图的中心位于父视图的中心,以及(b)自定义视图使AspectFit正确地嵌入父视图。有什么想法吗
编辑2-更新
抱歉-在原始问题中复制/粘贴了错误的代码-似乎无法编辑,因此我将在下面列出正确的版本-以便澄清:
MainViewController
-有一个UIView
“containerView
”(它不占据整个屏幕),而CustomView
-是一个带有XIB文件的UIView
-在这里呈现时(使用AspectFit
)是在父级边界之外呈现的UIView
“containerView
”
使用下面的代码,这现在有意义了吗?使用此代码的原因是我有一个自定义的UIView
,但我有一个与之关联的XIB文件,因此这是让我的MainController
视图能够使用它的唯一方法。也就是说,在MainController
视图中有一个容器视图,然后编程自动地将CustomView
添加到容器视图中
Re“因此,将要添加的视图的框架或中心设置为您想要的样子”——您是说我必须以编程方式/手动将CustomView的维度设置为我想要的(相对于父containerView)
我所希望的是,有一种方法可以使用declaritive布局设置来表示“从它的XIB文件加载自定义视图,并且aspectFit将此视图放入self.containerView”,但是我开始怀疑这是否可能
更新了下面的代码(当我复制/粘贴并更改变量名称等时,在原始问题中出错)
检查是否选中IB文件上父对象的“剪辑子视图”属性
我认为等效的代码是self.view.clipsToBounds=YES
如果这是
否
,则在外部绘制的子视图将像在父视图上绘制一样可见。谢谢-问题是如果我“剪裁子视图”,它会进行剪裁,但我真正需要的是在父视图区域(而不是整个屏幕区域)内渲染自定义视图。因此我需要(a)自定义视图的中心位于父视图的中心,以及(b)自定义视图到AspectFit正确地融入父视图。有什么想法吗?你能说得更具体一点吗?我不明白你在这里的意思。self.view.center=self.parentView.center应该居中查看。对于AspectFit,我不确定是否有内置属性。如果我没有错,它仅适用于UIImageView用于持久化-我已更新d/在我的编辑2的主要问题中进一步澄清了问题是的,您必须手动将其定位到父对象的中心。“声明式”定位方式适用于所有四个角,但不适用于中心。使用autoresizingMasks进行游戏。对于“Aspect Fit”“在自定义视图中,您必须手动编写代码。这里有一些关于如何适应CoreGraphics渲染视图的逻辑。谢谢你,伙计。这对我真的很有帮助。但我不明白这是怎么回事。clip是什么意思?
- (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];
}