0

sqlite databaseビュー (1 つの写真と説明)からデータを読み込んで配置したいと考えています。

データベースからデータをロードした後、データを位置 X と Y に配置するにはどうすればよいですか?

私はそれを説明するために画像を作成しました(私はのために開発していiphone 5ます): ここに画像の説明を入力

たぶんそれでできると思いますがCGRect、正確な方法はわかりません。

4

2 に答える 2

1

答えとしてコードを与えずに説明する方法がわかりません。ただし、通常の多次元ループとして。位置を計算し、現在のサブビューに新しい画像を追加します (可能な場合)。
以下はテストされていません:

[編集:正しいインデントと構文エラーのために更新]

   CGFloat IMAGE_WIDTH = 150;
   CGFloat IMAGE_HEIGHT = 150;
   CGFloat LABEL_PADDING = 10;

for (int i = 0; i < [TOTAL_ROWS]; i++) {
    // this is the initial frame for each row
    CGRect newFrame = CGRectMake(0, i * IMAGE_HEIGHT, IMAGE_WIDTH, IMAGE_HEIGHT);
    for (int j = 0; j < [TOTAL_COLUMNS]; j++) {
        // but for column we need to more the x.position so its not stacking on itself
        newFrame = CGRectMake(IMAGE_WIDTH * j,
                              newFrame.origin.y,
                              IMAGE_WIDTH,
                              IMAGE_HEIGHT);

        UIImageView *newImageView = [[UIImageView alloc] initWithFrame:newFrame];
        newImageView.image = [UIImage imageNamed:@"image.png"];
         // create a label at the bottom of the image
        UILabel *newLabel = [[UILabel alloc] initWithFrame:CGRectMake(newFrame.origin.x,
                                                                      newFrame.origin.y +
                                                                      newFrame.size.height +
                                                                      LABEL_PADDING,
                                                                      newFrame.size.width,
                                                                      newFrame.size.height)];
        [newLabel setText:[NSString stringWithFormat:@"description %d", j]];
        NSLog(@"%@", NSStringFromCGRect(newFrame));
        [self.view addSubview: newImageView];
        [self.view addSubview: newLabel];
    }
}
于 2013-02-24T00:23:18.070 に答える
0

それよりも別のより良い解決策を使用したと言うことが重要です。

iOS 6 にはCollectionViewControllerという新しい機能があります。

ここに画像の説明を入力

この問題の本当に良い解決策です。

于 2013-03-01T10:00:29.373 に答える