ViewControllerA
имеет метод viewDidLoad
, который программно создает кнопку, как:Как изменить программно созданный вид на вращение?
self.cancelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
self.cancelButton.frame = CGRectMake(330, 625, 125, 30);
[self.cancelButton setTitle:@"Cancel" forState:UIControlStateNormal];
[self.cancelButton sizeToFit];
[self.cancelButton addTarget:self action:@selector(cancelButton:) forControlEvents:UIControlEventTouchUpInside];
[self.cancelButton setNeedsDisplay];
[self.view addSubview:self.cancelButton];
У меня также есть - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{return YES;}
.
Когда устройство повернуто к пейзажу, я хочу изменить рамку кнопки. Я попытался проверить interfaceOrientation
в моем методе shouldAutorotate...
и установить рамку. Я попытался сделать if (UIInterfaceOrientationLandscapeLeft == [[UIApplication sharedApplication] statusBarOrientation])
и сбросить рамку. Ничего из этого не сработало. Какие-либо предложения?
EDIT
Вот еще одна попытка, которая не производит никаких изменений:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft){
self.cancelButton.frame = CGRectMake(15, 15, 300, 50);
}
}
Так что я попытался сделать:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if (toInterfaceOrientation == UIInterfaceOrientationPortrait
|| toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown){
NSLog(@"Portait");
} else {
NSLog(@"Landscape");
}
}
И ни один из NSLogs дозвонились, когда-либо. Моя точка зрения вращается, хотя ...
Я добавил изменение с попыткой. Я также попробовал интерфейс '- (void) willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation). Продолжительность сеанса: (NSTimeInterval) duration' с тем же кодом, но без изменения пользовательского интерфейса. –
Вы поставили точку останова в методе willAnimateRotationToInterfaceOrientation, чтобы убедиться, что он вызван с правильным значением? Я, похоже, также помню, что если у вас одновременно есть несколько контроллеров на экране, все становится глупо, особенно на iOS <5 – mprivat
Я просто добавил обновление к исходному сообщению. 'willAnimateRotationToInterfaceOrientation: duration:' никогда не вызывается в моем коде, даже если вид IS вращается. Ваш комментарий о нескольких контроллерах на экране интересен, хотя, поскольку контрольный контроллер, с которым я пытаюсь работать прямо сейчас, контролирует это представление, которое является представлением 'modalPresentationStyle UIModalPresentationFormSheet'. Возможно, в этом и проблема? –