tags:

views:

20

answers:

0

Hello, i have create springborad view like same as iPhone Home screen, like wiggling,icon arrangement. its working fine when application launch potriate view but when i rotate in Landscanview it display perfectly but frame not set perfectly;

may be portrait and landscape frame are different. i have set Row = 6;Column = 5; in potrait mode and Landscape mode i have set Row = 7;Column = 6;

-(void)GridViewIcon {

[gridView.layer  removeFromSuperlayer];
arrayIcon = [[NSMutableArray alloc]init];
NSArray *array = [[NSArray alloc] initWithObjects:@"1.png",@"2.png",@"3.png",.. 26 icon,nil];


arrayIcon = [NSMutableArray arrayWithArray:array];
[array release];

IconCount = [arrayIcon count];
k = 0;


    gridView = [[UIView alloc]init];
    //[gridView setUserInteractionEnabled:NO];

    int gridH,gridW;
    for (int row = 0; row <Row; ++row) 
    {
        for (int col = 0; col < Column ; ++col) 
        {

            int index = (row * Column) + col;

            CGRect frame = CGRectMake(TILE_MARGIN + col * (TILE_MARGIN + TILE_WIDTH), TILE_MARGIN + row * (TILE_MARGIN + TILE_HEIGHT),
                                      TILE_WIDTH, TILE_HEIGHT);



            NSString *APPICON = [arrayIcon objectAtIndex:index];
            UIImage *aImage = [UIImage imageNamed:APPICON];  

            WiggleEffect *objWiggle;
            tileFrame[index] = frame;
            objWiggle = [[WiggleEffect alloc]init];
            objWiggle.tileIndex = index;
            tileForFrame[index] = objWiggle;
            objWiggle.frame = frame;


        objWiggle.backgroundColor = [UIColor colorWithPatternImage:aImage].CGColor;
        objWiggle.delegate = self;

                    [gridView.layer addSublayer:objWiggle];

        [objWiggle setNeedsDisplay];
        [objWiggle release];

        k++;

            if(k == arrayIcon.count)
            {
                [self.view addSubview:gridView];
                return;
            }
            gridW = col * (TILE_MARGIN + 90) + 90;
            gridH = (row + 1)*(TILE_MARGIN + 90 ) + 90;

        }

        gridView.frame= CGRectMake(0, 0, gridW, gridH);
        gridView.center=self.view.center;


    }

[self.view addSubview:gridView];

} and of click frame page will redirect to relative screen. anyone have idea?

Thank you.