iOS / Obj-C UIScrollView视图未正确添加

时间:2013-01-16 20:38:40

标签: iphone ios objective-c uiscrollview uipagecontrol

我正在尝试使用已连接的页面控件创建基本滚动视图,并且我的代码遇到了一些问题。我的viewDidLoad方法如下所示:

- (void)viewDidLoad{
[super viewDidLoad];
NSLog (@"View did load");
// Do any additional setup after loading the view, typically from a nib.

scrollView.delegate = self;
scrollView.pagingEnabled=YES;

NSArray *frames = [NSArray arrayWithObjects:[UIColor redColor], [UIColor greenColor], [UIColor blueColor], nil];
for (int i = 0; i < frames.count; i++) {
    CGRect frame;
    frame.origin.x = self.scrollView.frame.size.width * i;
    frame.origin.y = 0;
    frame.size = self.scrollView.frame.size;

    UIView *subview = [[UIView alloc] initWithFrame:frame];
    subview.backgroundColor = [frames objectAtIndex:i];
    [self.scrollView addSubview:subview];
    NSLog (@"Looped, i = %i color = %@", i, [frames objectAtIndex:i]);
}

self.scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * frames.count, scrollView.frame.size.height);
NSLog(@"The width is: %f", self.scrollView.frame.size.width);
}

问题似乎是我尝试添加到视图中的彩色帧永远不会出现(甚至不是第一个)。如果我没有启用ARC,我会在每个循环结束时释放CGRect帧,但它确实应该用ARC自己做,对吗?

当我在模拟器和实际手机上运行应用程序时,我得到一个黑色屏幕,底部有UIPageControl点。当我在ScrollView上滑动手指时没有任何反应,但是如果我将它拉到一边很远,则pageControl会移动到下一个“点”。

最后一个NSLog语句总是输出0.0000,表示没有任何视图添加到滚动视图。

非常感谢所有帮助:)

1 个答案:

答案 0 :(得分:2)

问题是在viewDidLoad中进行。将您的代码移动到viewDidAppear:它应该可以正常工作。尚未在viewDidLoad中设置框架。