You generate only 3x3 grids because that is the value defined in your loop initialization, if you want a bigger grid just change those value, for instance for a 5x5 grid :
int x=5;
int y=5;
int hei=50;
int wid=50;
for (int i=0; i<5; i++)
{
for(int j=0;j<5;j++)
{
imageView1 = [[UIImageView alloc]initWithFrame:CGRectMake((x+wid)*i, (y+hei)*j, wid, hei)];
[imageView1 setImage:[UIImage imageNamed:@"Motocross.png"]]
[self.view addSubview:imageView1];
}
}