1

Xcode 4.6 で UIScrollview を使用しています。スクロールビューに約30枚の画像を挿入したい。ストーリーボード内では、実際にはストーリーボードを下にスクロールして画像を追加することができないため、これほど多くの画像を追加することはできません。したがって、すべての画像が互いに重なっています。

答えはおそらく非常に簡単なので、これがばかげた質問である場合は申し訳ありません。この多くの画像をスクロールビューに追加するにはどうすればよいですか?Android xml のようにコーディングする方法はありますか? それとも、画像が重ならないようにする方法はありますか?

4

3 に答える 3

2

UITableView の使用も検討してください。その多くの画像を処理するより効率的な方法かもしれません。一度にすべてではなく、表示されたときにそれらをロードできます。

于 2013-04-19T23:58:36.660 に答える
1

これは私が以前に解決した問題です。これを解決する方法はいくつかありますが、少なくとも iOS 6.x では、UICollectionView を使用することを選択できる新しい推奨方法だと思います。

UICollectionView Apple ドキュメントを表示

これは、役立つ情報がたくさんある素晴らしいチュートリアル サイトです。

UICollectionView チュートリアル

また、私が思いついた解決策の 1 つは、画像を手動で読み込んで配置することでした。そして、必要な幅のサイズに基づいて、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];



}

ここにないコードは他にもたくさんありますが、ページのレイアウトはここで処理されます。これでも最適な解決策ではありませんが、うまくいけば役に立ちます。

頑張ってください^_^

于 2013-04-20T00:09:29.030 に答える