0

現在のところ、drawRectメソッド内のview.mファイルにforループがあります。x軸に画像を表示するforループがあります。私がやりたいのは、x軸だけでなくy軸にも画像のグリッドを作成できるようにすることです。つまり、典型的なグリッドです。また、グリッド内の繰り返し画像のそれぞれに、ブール値、タッチしたときに取得できるID、座標など、いくつかのプロパティが付加されたオブジェクトを作成したいと思います。Objective-cでこれを行うにはどうすればよいですか?これが私がこれまでに持っているものですが、それほど多くはありません:

- (void)drawRect:(CGRect)rect
{
    int intX = 0; 
    int intCounter = 0;
    int intY = 0;
    for (intCounter = 0; intCounter < 10; intCounter++) {
        UIImage* pngLeaf = [UIImage imageNamed:@"leaf2.png"];
        CGRect imgRectDefault = CGRectMake(intX, 0, 34, 34);
        [pngLeaf drawInRect:imgRectDefault];
        intX += 32;
        intY += 32;
    }
}
4

1 に答える 1

1

UIViewsを使用すると簡単に利用できます。

これがグリッドルーチンです-はるかにコンパクトに書くことができますが、明示的に宣言された多くの変数を使用すると理解しやすくなります。メインのViewControllerに配置し、ViewWillAppearで呼び出します。

- (void)makeGrid
{


int xStart = 0;
int yStart = 0;
int xCurrent = xStart;
int yCurrent = yStart;

UIImage * myImage = [UIImage imageNamed:@"juicy-tomato_small.png"];

int xStepSize = myImage.size.width;
int yStepSize = myImage.size.height;

int xCnt = 8;
int yCnt = 8;

int cellCounter = 0;

UIView * gridContainerView = [[UIView alloc] init];
[self.view addSubview:gridContainerView];

for (int y = 0; y < yCnt; y++) {
    for (int x = 0; x < xCnt; x++) {
         printf("xCurrent %d  yCurrent %d \n", xCurrent, yCurrent);

        UIImageView * myView = [[UIImageView  alloc] initWithImage:myImage];
        CGRect rect = myView.frame;
        rect.origin.x = xCurrent;
        rect.origin.y = yCurrent;
        myView.frame = rect;
        myView.tag = cellCounter;
        [gridContainerView addSubview:myView];

        // just label stuff
        UILabel * myLabel = [[UILabel alloc] init];
        myLabel.textColor = [UIColor blackColor];
        myLabel.textAlignment = UITextAlignmentCenter;
        myLabel.frame = rect;
        myLabel.backgroundColor = [UIColor clearColor];
        myLabel.text = [NSString stringWithFormat:@"%d",cellCounter];
        [gridContainerView addSubview:myLabel];
        //--------------------------------

        xCurrent += xStepSize;
        cellCounter++;
    }

    xCurrent = xStart;
    yCurrent += yStepSize;
}

CGRect repositionRect = gridContainerView.frame;
repositionRect.origin.y = 100;
gridContainerView.frame = repositionRect;

}
于 2012-04-13T02:27:09.693 に答える