使用Interface Builder创建UIScrollView的步骤

ste*_*918 13 iphone uiscrollview uiview ios

我正在尝试使用UIScrollView,似乎有一些基本的东西,我只是不理解.

假设我想在我的iphone应用程序中使用UIScrollView.我有一个视图,其中包含320x700的按钮.显然,这对于320x480的iPhone来说太大了.所以我知道我必须使用UIScrollView.但是,这是我应该创建对象的顺序

  1. 创建一个320x700的UIScrollView作为"视图"中的尺寸
  2. 将所有按钮等放在此滚动视图上
  3. 在viewDidLoad中,将contentSize设置为320x700
  4. 将UIScrollView的委托设置为文件所有者,将FileOwner的视图设置为UIScrollView
  5. 将View的大小重置为320x480.

这是正确的吗?

这有效,但对我来说没有意义.我认为View应该是画布,我在其中添加了所有的UI元素.我希望iPhone应用程序的"画布"为320x700,我希望能够将我的按钮等放在这个320x700画布上.但是,如果我不将UIScrollView的大小更改回320x480,它将不会滚动,因为我需要将UIScrollView的内容大小设置为大于其大小.

但是,如果我将UIScrollView的大小设置为320x480,那么我在Interface Builder中看不到屏幕和480到700之间的按钮!因此,似乎我应该进行所有编辑并将所有UI元素添加到UIScrollView,然后将其设置回320x480!

有没有其他方法可以做到这一点更有意义?在理解这应该如何工作的过程中,我错过了什么?

rob*_*off 43

UPDATE

我在这里发布了另一种解决方案,我认为这种方案更简单,更好.

原版的

以下是您可能更喜欢的另一种方法:

  1. 将文件所有者占位符的自定义类设置为视图控制器子类.
  2. UIScrollView在笔尖中创建一个顶级对象.将其大小设置为屏幕大小(320x460)或只需打开"模拟指标"下的状态栏.
  3. 将滚动视图的delegate插座连接到文件的所有者.
  4. 将文件所有者的view出口设置为滚动视图.
  5. 创建UIView作为另一个在你的笔尖顶级对象.这将是您的内容视图.
  6. 将内容视图的大小设置为320x700.
  7. contentView在视图控制器(文件所有者)中创建一个强大的(或保留,如果不使用ARC)插座,并将其连接到内容视图.
  8. 将您的按钮放在内容视图中.
  9. 在视图控制器中viewDidLoad,执行以下操作:

    - (void)viewDidLoad {
        [super viewDidLoad];
        [self.view addSubview:self.contentView];
        ((UIScrollView *)self.view).contentSize = self.contentView.frame.size;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  10. 在视图控制器中viewDidUnload,执行以下操作:

    - (void)viewDidUnload {
        self.contentView = nil;
        [super viewDidUnload];
    }
    
    Run Code Online (Sandbox Code Playgroud)

滚动按钮项目窗口
全尺寸


Ale*_*ciu 5

你是对的,View是添加所有UI元素的画布.界面构建器起初有点奇怪,但你会习惯它,这就是它的工作方式.

您必须坚持必须调整ScrollView的大小.您应该这样想:ScrollView具有帧大小和内容大小.它的构建方式是,如果内容大小大于帧大小,那么它将滚动.您必须在界面构建器中使框架尽可能大,以便您可以定位内部元素.当您运行应用程序时,您应调整滚动框的大小以适应iPhone的屏幕分辨率.控件的框架大于屏幕是没有意义的.

--------------------------------------------
|         |                      |         |
|         |                      |         |
|         |                      |         |
|         |                      |         |
|         |                      |<------------------ iPhone Screen frame
|         |                      |         |
|         |                      |         |
|         |                      |         |
|         |                      |         |<------- ScrollView Content size
|         |                      |         |
|         |                      |         |
|         |                      |<----------------- ScrollView Frame Size
|         |                      |         |
|         |                      |         |      
|         |                      |         |
|         |                      |         |
|         |                      |         |
|         ------------------------         |
|                                          |
|                                          |
|                                          |
--------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我希望这种表示方式能让人们更清楚地知道应该如何工作.换句话说,滚动框架就是你可以看到内容的洞,如果整体和内容一样大,那么你就没有必要滚动cos你可以看到它.

我建议也尝试在代码中编写组件而不使用IB来更好地理解.