2010-05-20 2 views
0

Я создал UIViewController и UIView с двумя UIButtons в нем.Autoresizing subviews в iPhone программно

self.view = [[UIView alloc]initWithFrame:CGRectMake(0,0,320,480)]; 
self.view.autoresizesSubviews = YES; 

self.view.backgroundColor = [UIColor redColor]; 
UIView *view; 
view = [[UIVew alloc]initWithFrame:CGRectMake(0,0,320,480)]; 
view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
UIButton *button1; 
button.frame = CGRectMake(100,130,120,50); 
[button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 
[view addSubview:button]; 
[controller addSubview:view]; 

// […] 

- (void)buttonAction:(id)sender 
{ 
    // I have created another view for a purpose 
    [view removeFromSuperview]; 
    UIView *view_obj; 
    view_obj.backgroundColor = [UIColor greenColor]; 
    view_obj.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth; 
    [self.view addSubview:view_obj]; 
} 

Проблема: Когда я изменить ориентацию в ландшафт вид, который имеет кнопку изменяет размер, но когда я нажимаю на кнопку вид с blueColor отображается без autoresized. Где я вижу половину от корневого вида в redColor и наполовину как subview в greenColor.I также переопределил метод ShouldAutoRotate и сделал этот проект программно. Пожалуйста, ответьте мне.

ответ

-1

Попробуйте исследовать this вопрос.

Или

Смотреть следующий код из this question.

- (void)willAnimateSecondHalfOfRotationFromInterfaceOrientation: (UIInterfaceOrientation)fromInterfaceOrientation duration:(NSTimeInterval)duration {  
    UIInterfaceOrientation interfaceOrientation = self.interfaceOrientation; 
    if (interfaceOrientation == UIInterfaceOrientationPortrait 
     || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) 
    { 
     button1.frame = CGRectMake(100, 33, 226, 275); 
     button2.frame = CGRectMake(440, 33, 226, 275); 
     button3.frame = CGRectMake(100, 360, 226, 275); 
     button4.frame = CGRectMake(440, 360, 226, 275); 
     button5.frame = CGRectMake(100, 693, 226, 275); 
     button6.frame = CGRectMake(440, 693, 226, 275); 
    } 
    else 
    { 
     button1.frame = CGRectMake(100, 50, 226, 275); 
     button2.frame = CGRectMake(400, 50, 226, 275); 
     button3.frame = CGRectMake(700, 50, 226, 275); 
     button4.frame = CGRectMake(100, 400, 226, 275); 
     button5.frame = CGRectMake(400, 400, 226, 275); 
     button6.frame = CGRectMake(700, 400, 226, 275); 
    } 
} 
- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation { 
    return (interfaceOrientation || UIInterfaceOrientationPortraitUpsideDown); 
} 
+0

Hi sagar, Спасибо большое .. Я пробовал и это вроде как работа. У меня есть еще одна проблема. Когда я превращаю его в пейзаж, мой навигационный контроллер слегка приоткрывается от экрана. Как правильно установить его? – Cathy

0

В Interface Builder выберите объект вида, а затем в «Просмотр Атрибуты» панели окна инспектора убедитесь, что вы выбрали строку состояния и «Top Bar» в «Navigation Bar» (предполагается, что ваше приложение имеет навигационная панель). Вы увидите их в верхней части в разделе «Моделируемые пользовательские интерфейсы». Это сообщает приложению о том, чтобы всегда оставлять место для них при определении размера представления UIViewController.

Смежные вопросы