如何修改现有的UIViewController以允许滚动?

时间:2010-07-07 04:48:38

标签: iphone uiview uiviewcontroller interface-builder uiscrollview

我已经构建了一个UIViewController子类,其中包含一堆控件,并且意识到如果我旋转iPhone,则一半的控件变得不可见。所以,我想以某种方式使UIViewController's UIView可滚动,以便当设备(或模拟器)旋转时,用户可以滚动视图以查看所有控件。

我希望在 Interface Builder 中完成所有这些操作。我尝试在类标识编辑器中将视图的类从UIView更改为UIScrollView,但没有滚动。我的视图控制器的基类是一个简单的UIViewController <UIScrollViewDelegate>

是否有一种简单的方法可以使我的视图控制器中的主视图可以滚动而无需在IB中重新创建整个视图?

7 个答案:

答案 0 :(得分:6)

对于使用故事板的人来说,这很容易做到

    文档大纲中的
  • 选择UIViewController的最顶层View
  • 然后在Identity Inspecter中的Custom Class下,输入UIScrollView

那就是它。

答案 1 :(得分:2)

添加UIScrollView并制作所有控件和小部件,并通过将它们拖动到滚动视图“进入”或“内部”的任何位置来标记滚动视图的子视图。这使它们成为滚动视图的子视图,这就是你想要的。

答案 2 :(得分:2)

您可以按照以下方式执行此操作:

  1. 打开你的nib文件并在你的UIView对象下创建一个UIScrollView对象。
  2. 将所有控件移至UIScrollView
  3. 打开头文件(.h)并为滚动视图添加新属性:
  4. @property(非原子,保留)IBOutlet UIScrollView * scrollView;

    1. 打开您的实施文件(.m)并插入以下内容:
    2. @synthesize scrollView;

      - (void)viewDidLoad
      {
          [super viewDidLoad];
          // Do any additional setup after loading the view, typically from a nib.
      
         // Enable scrolling for portrait
          scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, 600);  
      
      }
      
      1. 返回到您的nib文件,并将文件所有者的scrollView连接到UIScrollView对象。
      2. 这里真正的技巧是设置scrollView.contentSize。设置完成后,应该进行滚动。

        如果要在设备处于纵向方向时启用滚动,可以使用:

           // Enable scrolling for landscape orientation
            scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, scrollView.frame.size.height); 
        

        这应该给你一些参考框架。

        跳蚤

答案 3 :(得分:1)

我能够通过向IB中的视图添加滚动视图来实现此目的,使视图控制器成为UIScrollViewDelegate,将scrollview连接到IB中的UIScrollView对象,将委托挂钩到文件所有者,并添加此行在viewDidLoad中:

    - (void) viewDidLoad {
        scrollView.contentSize = CGSizeMake(1280, 960);
    }

答案 4 :(得分:1)

仅当contentSize的{​​{1}}大于其边界时才会调用滚动行为。

答案 5 :(得分:0)

了解界面显示的内容会很有帮助,但我建议使用以下方法之一:

  1. 不要通过从shouldAutorotateToInterfaceOrientation
  2. 返回NO来允许轮换
  3. 将Interface Builder用于adjust your springs and struts,以便所有界面元素都适合横向视图
  4. 在Interface Builder中添加一个新的UIScrollView并将UIView拖入其中,然后将文件所有者的view属性重新指定给滚动视图。

答案 6 :(得分:0)

将滚动条添加到Xib文件中,然后拖动&amp;将控件放入滚动条。在load view内使用

scrollView.contentSize = CGSizeMake(CONTENT_WIDTH, CONTENT_HEIGHT);