Как установить другой размер рамки просмотра изображений в «Ориентациях» в iPhone? - PullRequest
1 голос
/ 11 марта 2011

Я создал вид изображения и установил изображения в этом виде, а также добавил вид изображения в качестве дополнительного вида вида прокрутки (например, слайд-шоу изображений). Поэтому я хочу установить размер кадра просмотра изображения и размер кадра прокрутки как динамически. Я хочу установить другой размер рамки просмотра изображения и размер просмотра прокрутки в портретном и альбомном режимах. Так как я могу установить другой размер кадра в альбомной и портретной ориентации.

Вот мой пример кода,

- (void)viewDidLoad {

    [super viewDidLoad];

        self.scroll = [[UIScrollView alloc] init];

        self.scroll.delegate = self;

        self.scroll.pagingEnabled = YES;

        self.scroll.contentMode = UIViewContentModeScaleAspectFit;

        self.scroll.autoresizingMask = ( UIViewAutoresizingFlexibleHeight |
                                                                        UIViewAutoresizingFlexibleWidth );

        [self.view addSubview:self.scroll];

         totalArray =   [[NSMutableArray alloc] initWithObjects:[UIImage imageNamed:@"dashboard_demo_2.png"],
                                   [UIImage imageNamed:@"dashboard_demo_1.png"],
                                   [UIImage imageNamed:@"dashboard_demo_2.png"],
                                   [UIImage imageNamed:@"3.jpg"],
                                   [UIImage imageNamed:@"4.jpg"],
                                   [UIImage imageNamed:@"12.jpg"],
                                   [UIImage imageNamed:@"5.jpg"],nil];
        x = 0;

        for(int i = 0; i< [totalArray count]; i++)
        {
                img = [[UIImageView alloc] initWithFrame:CGRectMake(x, 0, 320, 200)]; 

                img.image =[totalArray objectAtIndex:i];

                x = x+320; // in portait mode if the image sets correctly, but landscape mode it will x = x + 480;

                [self.scroll addSubview:img];

        }      
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

        UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

        if (orientation == UIDeviceOrientationPortrait ||
                orientation == UIDeviceOrientationPortraitUpsideDown )
        {
                [self portraitMode];
        }
        else if (orientation == UIDeviceOrientationLandscapeLeft ||
                         orientation == UIDeviceOrientationLandscapeRight )
        {
                [self LandscapeMode];

        }              

        return YES;
}

-(void) portraitMode
{

       //How to set the frame sizes.

        self.scroll.frame = CGRectMake(0, 0, 320, 200);

        img.frame = CGRectMake(x, 0, 320, 200);

        scroll.contentSize = CGSizeMake(x, 200); // it doesn't set

}

-(void) LandscapeMode
{

        //How to set the frame sizes

         self.scroll.frame = CGRectMake(0, 0, 480, 320);

        img.frame = CGRectMake(x, 0, 480, 200);

        scroll.contentSize = CGSizeMake(x, 320); // it doesn't set

}

Пожалуйста, помогите мне.

Спасибо.

1 Ответ

0 голосов
/ 11 марта 2011

Привет,

Вы можете зарегистрироваться в центре уведомлений для изменения ориентации экрана.

Код для регистрации в центре уведомлений.

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
    [[NSNotificationCenter defaultCenter] addObserver:self 
                                  selector:@selector(ScreenRotate:) 
                                  name:UIDeviceOrientationDidChangeNotification
                                  object:nil];

Реализация метода ScreenRotate.

-(void) screenRotate:(NSNotificationCenter*) notification
 {

    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];    

    if( orientation == UIDeviceOrientationLandscapeLeft)
    {

    }
    else if ( orientation == UIDeviceOrientationLandscapeRight )
    {

    }
    else if ( orientation == UIDeviceOrientationPortrait )
    {

    }    
 }

Код для отмены регистрации в центре уведомлений.

[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];

    [[NSNotificationCenter defaultCenter] removeObserver:self 
                                                    name:UIDeviceOrientationDidChangeNotification
                             object:nil];



- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
        return YES;
}

...