В чем разница между self.view.frame и self.superview.frame и как их использовать? - PullRequest
0 голосов
/ 12 сентября 2011

Я хотел бы знать, в чем разница между этими двумя строками кода?

    self.view.frame = CGRectMake(0, 0, 320, 480);
    self.view.superview.frame = CGRectMake(0, 0, 800, 900);

, и я хочу изменить рамку вида, когда изменится моя ориентация, потому что это изменит положение метоки я хочу, чтобы они были посередине экрана, кто-нибудь может направить меня?

Я использую следующий метод делегата для ориентации, но он не работает с

self.view.frame

, но он работаетХорошо, следующая строка

self.view.superview.frame

См. следующий код

// Override to allow orientations other than the default portrait orientation.
  - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation     {

// Return YES for supported orientations
//return (interfaceOrientation == UIInterfaceOrientationPortrait);
if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
    NSLog(@"LEFT");
    self.view.frame = CGRectMake(100, 0, 480, 320);
    NSLog(@"Show self.view.frame: %@", NSStringFromCGRect(self.view.frame));
   // self.view.superview.frame = CGRectMake(-50, -70, 800, 900);
    [button setFrame:CGRectMake(340, 320, 100, 30)];
}
if (interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
    NSLog(@"RIGHT");
    self.view.frame = CGRectMake(0, 0, 320, 480);
    NSLog(@"Show self.view.frame: %@", NSStringFromCGRect(self.view.frame));
         //self.view.superview.frame = CGRectMake(10, 90, 800, 900); //It is working if           I will uncomment it
    [button setFrame:CGRectMake(250, 300, 100, 30)];
}
if (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
    self.view.frame = CGRectMake(0, 0, 320, 480);
    //self.view.superview.frame = CGRectMake(0, 0, 800, 900);//It is working if           I will uncomment it
    [button setFrame:CGRectMake(250, 400, 100, 30)];    
}
return YES;
}

Ответы [ 2 ]

1 голос
/ 12 сентября 2011

self.view - это представление о себе (если мы говорим о viewControllers).self.view.superview - это представление, которое содержит self.view.

Итак, вкратце, если вы добавите представление к окну, суперпредставлением этого представления будет окно.

Установкафрейм потерпит неудачу, если маска авторазмера не установлена ​​правильно.

0 голосов
/ 12 сентября 2011

Как общий оператор, первая строка пытается установить кадр текущего представления viewController, в которое записан этот код.

Вторая строка пытается установить кадр родительского представления представления текущего представления viewController.

Что именно это означает и какой из них следует использовать, боюсь, зависит от иерархии представлений, которую вы настроили в своем приложении.

...