2010-06-29 66 views
1

我有一堆'rowviews',我想放在一个垂直滚动视图。我在IB中创建了这个rowView视图作为单独的笔尖。它们的尺寸为1024/200(ipad)。现在我想把它们一个接一个地放在我的父级UIScrollView中。我尝试了一个简单的[vScroll addSubview:rowView],但是这使他们超越了彼此(我使rowview透明来检查它)。所以后来我开始愚弄每一行视图的界限无济于事。这是我的代码。注意“self.yExtentSoFar”被初始化为0。试想一下,下面呼吁每一行代码:UIView setBounds UIScrollView地狱!

  MyRowView *rowView = [[MyRowView alloc] init]; 

    float calculatedWidth = 0; 
    // minus nav bar 
    float calculatedHeight = 0; 
    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
    UIInterfaceOrientation orientation = [UIDevice currentDevice].orientation; 
    if (orientation == UIInterfaceOrientationPortrait){ 
     // iPad 
     calculatedWidth = 768.0; 
     calculatedHeight = 960.0; 
    }else{ 
     // iPad 
     calculatedWidth = 1024.0; 
     calculatedHeight = 704.0; 
    } 

    [self.vScroll addSubview: rowView.view]; 
    [rowView.view setBounds:CGRectMake(0, self.yExtentSoFar, calculatedWidth,200)]; 
    [self.vScroll setContentSize:CGSizeMake(calculatedWidth, yExtentSoFar+200)]; 
    self.yExtentSoFar += 200; 

所以之前我试过设置界定的rowviews上层建筑出现对方。我可以理解。当我设置边界时,第二排视图并没有像预期的那样出现在1st下方,相反,我不得不拉下vScroll,并且2nd出现在第一个关闭屏幕的上方!

有人能指出我要去哪里吗?非常感谢,

迈克

+0

只是一个想法,X和Y是0,0在顶部左侧角球权“的框架,边界,和中心的关系”? – 2010-06-30 00:08:24

+0

在iPhone上查看,是的。 – 2010-06-30 00:26:49

+0

好的,那么为什么200的y值会将它置于负数? – 2010-06-30 00:37:16

回答

3

你想通过设置他们的frame来布局你的子视图。

具体来说,你是混淆参考坐标..界限是指多少该视图显示。鉴于框架是应该将视图置于其超级视图中的位置(大小为&)。

View Programming Guide for iPhone

+0

完美! Thankyou :) – 2010-06-30 05:33:42

+0

另外,在处理'UIScrollView'中的视图集合时,我将它们放在容器视图中。这有助于当我需要遍历“滚动”子视​​图来处理它们时。如果您依赖'myScrollView.subviews',您将会看到包含滚动条指示器视图! (容器视图是myScrollView的唯一子视图) – ohhorob 2010-06-30 05:44:06

2

你做错了什么;-)你在这儿解释或多或少重新实现你开始使用哪一个UITableView的。 Use a UITableView和一个自定义表格视图单元格。它会让你的生活变得更容易很多

+0

使用自定义的UITableCell视图听起来更复杂。我只想在UIScrollView中查看我的视图。他们为什么会出现在彼此之上(屏幕外)而不是彼此之下。我无法想象每当需要垂直滚动的情况时,人们使用UITable。 – 2010-06-30 02:36:16

+0

不要太啰嗦,但实际上,无论你能否想象,人们都会经常使用UITableViews。根据你在问题中的描述,这正是你所需要的。了解如何使用表格视图。正如我之前所说,它会让你的生活变得更加容易。相信我。 ;-) – 2010-06-30 03:27:20

+0

首先谢谢你的回答。我只是觉得重新使用现有的组件只有在您获得免费的功能时才有用,否则您将不得不创建。一旦我实现了所有的委托方法和表格的东西,并与自定义表格单元格视图混在一起,我可以写一个vScrollView的3行。我也只是想知道我的事情出了什么问题。 @ohhorob回答了我的问题。 Thankyou虽然你的答案!下次我会试一试。 – 2010-06-30 05:33:11