【问题标题】:How to implement UIScrollView with Subviews from XIB's如何使用 XIB 的子视图实现 UIScrollView
【发布时间】:2011-01-14 23:12:29
【问题描述】:

以网格格式将 UIView(来自 xib)添加到 UIScrollView 的最佳方法是什么?

我查看了 AQGridView,但不确定从哪里开始创建我需要的自定义视图。

【问题讨论】:

    标签: ipad ios interface uiscrollview grid


    【解决方案1】:

    我假设网格是指主屏幕跳板之类的东西,其中每个图标都是不同的视图。

    我还假设您已在 IB 中实例化 UIView 并设置了所有适当的连接并在您的代码中有一个指针。

    然后在你的拥有 UIScrollView 的控制器中,(这就是我会做的,以前做过的)循环遍历你的所有 UIViews(在你复制在 xib 中创建的模板之后;我再次假设在这里,因为您的问题没有很好地定义),使用一些简单的数学设置它们的框架,然后使用 addSubview 将它们添加到 UIScrollView。最后确保将 UIScrollView 的 contentSize 设置为适当的值。

    这是一个例子:

    -(void)displayNewView:(NewView *)newIcon {
        //create view object
        NewViewController *newVC = [[NewViewController alloc] init];
    
        //modify the new UIView so it shows the correct state
        newVC.networkHost = newIcon;
    
        //add view object to screen
        [self.scrollView addSubview:newVC.view];
    
        //release a retain on the object
        [newVC release];
    
        //reposition the view object
        newVC.view.frame = CGRectMake((self.viewsOnDisplay%3*104), (self.viewsOnDisplay/3*105+6), 106, 95);
    
        //resize the view if necessary
        self.scrollView.contentSize = CGSizeMake(320.0, (self.viewsOnDisplay/3*105+96+6));
    }
    

    在视图重新定位的那一行中,进行了总和数学运算,而不是向您显示一堆符号,我从我的一个应用程序中取了一行,我会告诉您每个数字的含义(它们都是不同,因此这是区分它们的便捷方法):

    3: number of views per row
    104: horizontal spacing between views
    
    105: vertical spacing between views
    6: space at the very top of the UIScrollView (a header if u will)
    
    106: view width
    95: view height
    

    因为这是一个简单地将单个 UIView 添加到屏幕的方法,它访问本地合成属性self.viewsOnDisplay 以了解已经显示了多少视图,因此它知道将下一个视图放在哪里。如果您将其作为 for 循环或其他内容的一部分执行此操作,则这将只是 i (或称为计数器 var 的任何内容)。请记住,您的计数器应从 0 开始。

    【讨论】:

      猜你喜欢
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 2021-04-24
      • 2014-12-17
      • 2021-02-10
      • 2013-03-30
      相关资源
      最近更新 更多