为什么ADDSUBVIEW:使用AutoLayout添加一个大小不良的子视图



我在uiviewController中有一个Uiview。我正在使用Objective-C和AutoLayout故事板。这是一个简单的步骤:以编程方式添加一个Uiview到我的故事板的Uiview中。

我正在使用此代码:

UIView *newView = [[UIView alloc]initWithFrame:myStoryboardView.frame];
[newView setNeedsLayout];
[myStoryboardView addSubview:newView];

我还尝试使用边界而不是帧:

UIView *newView = [[UIView alloc]initWithFrame:myStoryboardView.bounds];
[newView setNeedsLayout];
[myStoryboardView addSubview:newView];

但是,当我运行此操作时,宽度是错误的,不像我第一个Uiview的宽度。但是,如果我将故事板更改为与我用于运行应用程序的模拟器相同的故事板,则两个Uiviews中的宽度相同...

我该怎么做才能自动设置宽度与我的firts视图中的视图。

您能确保MystoryBoardView.Frame在此时正确吗?您在哪里执行此代码?可能是,在这一点上,故事板视图仅从故事板文件(其中具有IB中设置的框架(初始化,尚未调整为屏幕尺寸,屏幕尺寸以后发生。如果您使用的是UiviewController。

尝试在ViewDidload中的某个地方分配此新子视图。然后在ViewDidAppear中将其框架设置为Supperiew Bouds:

- (void)viewDidLoad {
  UIView *view = UIView.new;
  view.tag = 100; // or store it as a property
  [storyboardView addSubview:view];
}
- (void)viewDidAppear:(BOOL)animated {
  [[storyboardView viewWithTag:100] setFrame:storyboardView.bounds];
}

最新更新