【问题标题】:Advice on how to use a UIScrollView关于如何使用 UIScrollView 的建议
【发布时间】:2013-08-02 14:14:51
【问题描述】:

您好,我有一些应用程序(来自书中),看起来像这样:

您可以看到图像被裁剪。我想要一个 UIScrollView 它允许向上滚动并查看整个图片。

这就是我的应用在界面生成器中的外观。

你有什么建议我应该在哪里添加 ScrollView(作为哪个子视图等)来实现我需要的? (我想我需要一些中介 UIView?)

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    这是我通常对固定内容所做的:

    1. 在 IB 中,使用 UIScrollView 以您想要的大小和位置创建您的视图,并连接到 scrollView 插座。
    2. 还在 IB 中为内容创建视图(大于滚动视图)。将此连接到名为 contentViewUIView 插座。
    3. viewDidLoad 中这样做:

      // Put the content view into the scroll view
      [self.scrollView addSubview:self.contentView];
      self.scrollView.contentSize = self.contentView.bounds.size;
      

    如果您想要动态内容,则以编程方式将它们布置在viewWillLayoutSubviews 中,并设置scrollViewcontentSize

    【讨论】:

    • 看看如果我有这样的代码会发生什么:` -(void) viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:[self.view bounds]]; [[自我视图] addSubview:scrollView]; [scrollView addSubview: mainView]; [scrollView setContentSize:[mainView bounds].size]; }` 这是我用上面的代码得到的截图:postimg.org/image/5gumcich9 mainView 是一个中间视图 - 带有蓝色 bckgnd。您可以看到它与 UIToolbar 重叠...
    • 那是因为您将其框架设置为完整视图边界。而是将滚动视图框架设置为正确的大小(减去工具栏),或者最好在 IB 中进行。另请注意 - 您不应该在 viewDidAppear 中创建视图,而是在 Interface Builder (IB) 或 loadViewviewDidLoad 中创建视图。
    • jhabbot:你说:“你不应该在 viewDidAppear 中创建视图”——为什么?由于这个原因,我避免使用 viewDidLoad:stackoverflow.com/questions/17882199/…。无论如何,正如你所说,我现在用正确的框架在 IB 中创建了 ScrollView(它更容易)而且它似乎工作正常 - 我也将代码放在 viewDidLoad
    • 因为每次视图出现时都会调用viewDidAppear(例如,在从导航返回视图后再次显示时,或解锁屏幕,或关闭模式对话框时)。因此,如果您继续在那里添加视图,您将拥有很多视图。
    • 嗯...我明白了。还有一件事。以前我的应用程序最初是您在屏幕截图中看到的,当用户单击 TextField 时,会出现键盘 - 如果用户在该键盘之外单击,则在我的主要区域 Control 上说,我在 @987654339 中实现了 resignFirstResponder @(使键盘消失)。但是现在它当然不再起作用了,因为如果用户在键盘外点击她会点击mainView——在这种情况下我该怎么办?
    【解决方案2】:

    将 UIScrollView 添加为 Control 的直接子级,然后将其他所有内容放在滚动视图中。

    【讨论】:

      【解决方案3】:

      添加UIScrollView 作为主视图的第一个子视图,并将所有控件(UITextView, UILabel,...etc ) 作为 UIScrollView 的子视图。

      并使用UIScrollView 属性contentSize 设置您的可见区域。

      For more information read this tutorial.

      【讨论】:

        【解决方案4】:

        您应该直接在 Control 下添加 UIScrollView,然后除了工具栏之外的所有其他内容都应该进入它。

        在这些情况下,我通常将滚动视图设置为适合所有内容的大小,添加内容,然后调整滚动视图的大小,使其只占用您想要的屏幕。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-12-25
          • 2013-07-21
          • 2011-07-07
          • 2011-10-28
          • 2011-08-11
          • 1970-01-01
          • 2014-04-04
          • 2018-09-03
          相关资源
          最近更新 更多