如何在Storyboard中的任何ViewController之外设计单独的UIView?

时间:2012-03-10 16:31:13

标签: objective-c ios ios5 uiview uiscrollview

我想设计一个UIView,它比Storyboard(iOS 5)中的ViewController大。

UIView应该用作UIScrollView的子视图,因此比我现有的任何ViewControllers都要大。如何在Storyboard中创建这样的UIView并将其与我的UIScrollView相关联?

如果可能,我想在没有xib文件的情况下这样做。

谢谢!

3 个答案:

答案 0 :(得分:20)

除了使用xib之外,我没有其他选择,但这并不令人讨厌:

//We have file called "View.xib" in our project. It contains one SINGLE view
NSArray *xibContents = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil];
UIView *view = [xibContents lastObject]; //safer than objectAtIndex:0

[self.scrollview addSubview:view];
self.scrollview.contentSize = view.frame.size; 

为了建立IB连接,您可以将xib中的filesOwner类设置为viewController,并像往常一样连接。

答案 1 :(得分:2)

您可以将UIView放入滚动视图,然后直接在viewController的{​​{1}}内进行设计

答案 2 :(得分:1)

我找到了编辑添加到场景中的视图的方法(与ViewController处于相同的层次结构级别)。

不幸的是,它来自hackish种类型的操作。 我的Xcode版本为Version 4.5.2 (4G2008a)。我在真实的项目和新的空项目中测试了这个。

基本的想法是Xcode确实能够编辑这样的外部视图,遗憾的是这种模式不能直接激活。

在我发现的方法中,您需要在外部视图中包含2级层次结构:

Scene
|- VC
   |- View
|- ExternalView
   |- SubView1
      |- SubView2
  • 然后转到Document Outline面板
  • 在您的场景树中找到SubView2
  • 双击它

编辑区域将出现,其坐标将保存到项目的用户数据中,因此您可以根据需要将其移动到更合适的位置,下次在机器上打开IB中的故事板时,它将是那里。虽然我认为在其他机器上你必须再次这样做(我没有测试过)。