UIScrollview包含许多图像

时间:2013-04-19 23:26:21

标签: iphone objective-c xcode

我在Xcode 4.6中使用UIScrollview。我想在scrollview中插入大约30张图片。在故事板中我无法添加这么多,因为它实际上不允许您在故事板上向下滚动以添加更多图像,因此所有图像彼此重叠。

答案可能很简单,如果这是一个愚蠢的问题,那就很抱歉。如何将这么多图像添加到scrollview中,有没有办法在Android xml中编写代码?或者无论如何没有图像重叠?

3 个答案:

答案 0 :(得分:2)

还要考虑使用UITableView。它可能是处理许多图像的更有效方式。您可以在显示它们时加载它们,而不是一次性加载它们。

答案 1 :(得分:1)

您不希望在Interface Builder中执行此操作 - 这将使其成为创建和维护的噩梦。

相反,在代码中执行此操作。您希望Google UIScrollView tutorial开始使用。这真的很容易 - 比手动拖出一堆图像视图要容易得多。

答案 2 :(得分:1)

所以这是我以前解决过的问题。有几种方法可以解决这个问题我认为至少在iOS 6.x中你可以选择使用UICollectionView。

UICollectionView View Apple Docs

这是一个很棒的教程网站,里面有大量有用的信息

UICollectionView Tutorial

我提出的一个解决方案是手动加载和放置图像。然后根据所需的宽度大小,我设置了我的UIScrollView setcontentSize属性。

//Clean Up and remove old buttons
for(int i=0; i < _localButtonArray.count; i++){
    [(CategoryButton*)[_localButtonArray objectAtIndex:i] removeFromSuperview];
}
[_localButtonArray removeAllObjects];

CGFloat baseX = 10,
        X = 0,
        Y = 0;
int xPadding = 20,
    yPadding = 12,
    index = 0,
    maxRow = 4,
    maxCol = 4,
    colCount = 0;
CGRect buttonFrame;

buttonFrame.size.height = 137;
buttonFrame.size.width  = 137;
buttonFrame.origin.y    = X;
buttonFrame.origin.x    = Y;



for(int i = 0;i < _localInfoArray.count ; i++){

    id object = [_localInfoArray objectAtIndex:i];

    if(index >= maxRow){
        index = 0;
        X = baseX;
        Y += buttonFrame.size.height + yPadding;
        if(colCount >= (maxRow * maxCol)){
            colCount=0;
            baseX += 637;
            Y = 0;
        }
    }
    X = baseX + (index * (buttonFrame.size.width + xPadding));
    index++;
    colCount++;

    buttonFrame.origin.x = X;
    buttonFrame.origin.y = Y + yPadding;
    /*
     * Custom button class
     */
    CategoryButton * categoryButton = [[CategoryButton alloc]initWithFrame:buttonFrame Object:object];



    //Add action
    [categoryButton addTarget:self action:@selector(categoryButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

    [categoryButton.titleLabel setNumberOfLines:3];
    [categoryButton.titleLabel setLineBreakMode:NSLineBreakByWordWrapping];
    [categoryButton.titleLabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:19]];
    [categoryButton.titleLabel setTextAlignment:NSTextAlignmentCenter];
    [categoryButton setMultipleTouchEnabled:NO];

    [_localButtonArray addObject:categoryButton];
    [self.view addSubview:categoryButton];



}

还有很多其他代码不在这里,但是在这里处理页面布局。 即使这不是最佳解决方案,但希望它能为您提供帮助。

祝你好运^ _ ^