如何动态地将 xib 文件视图放入故事板视图中?

问题描述

我已经设置了一个带有按钮的简单布局,当按下该按钮时,会导致故事板子视图加载一个 xib 文件并将其视图分配给故事板子视图。问题在于 xib 视图导致故事板子视图“打破”其原始约束:

这是主故事板(左)和 xib 视图(右):

main storyboard

xib view controller

这是当我按下主故事板上的按钮时发生的事情。

- (IBAction)btnShowView:(id)sender {
    
    xibViewController *xib_VC = [[xibViewController alloc] initWithNibName:nil bundle:nil];
    xib_VC.modalPresentationStyle = UIModalTransitionStyleCrossdissolve;
    
    //xib_VC.view.frame.size = self.myView.frame.size;
    
    UIView *view = xib_VC.view;
    
    [self.myView addSubview:view];
    
}

这是结果 - 您可以看到 xib 视图导致主故事板子视图超出其约束。

enter image description here

我猜动态更改故事板子视图会覆盖其原始视图和约束?在将 xib 视图分配给故事板子视图之前,我是否必须再次以编程方式添加这些约束?

解决方法

根据您的描述,您的意图似乎是将新创建的视图(xib_VC.view)放在 myView 的位置。

您提到的代码是将 xib_VC.view 作为子视图添加到 myview 中,它对其没有任何约束或为 view 提供框架。

设置 xib_VC.view.frame.size 将不起作用,这是在 xib_VC 中查看的框架。

如果您只需要视图,那么您不必创建视图控制器 xib。只需创建视图 xib。

以下行没有用,因为您没有使用控制器。 xib_VC.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;