Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 为什么我的UIView子视图不在父视图中呈现?(附代码)_Iphone_Ios_Uiview_Uiviewcontroller_Addsubview - Fatal编程技术网

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
用于设置自定义视图的代码是MainViewController的以下摘录:

>

因此,我不明白为什么
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];
}