Я столкнулся с проблемой, которая сводит меня с ума. Я читал об этом вокруг, но я не нашел решения. Я разрабатываю приложение, которое представляет модально контроллеры представления в зависимости от ориентации устройства. Когда ориентация устройства обращена вверх, TabBarController представлен модально. TabBarController содержит два viewController, один для отображения карты, а другой (еще не реализованный) предназначен для других целей. Когда я меняю ориентацию устройства, приложение зависает, показывая следующие сообщения:
MobileAR [8642: 707] Использование двухэтапной анимации вращения. Чтобы использовать
плавная одноэтапная анимация, это приложение должно удалить
реализации двухэтапного метода.
2011-12-07 21: 47: 37.566 MobileAR [8642: 707] Использование двухэтапного вращения
анимация не поддерживается при вращении нескольких контроллеров вида
или просмотр контроллеров, а не оконного делегата
это когда loadView:
метод контроллера вида карты
Нет проблем с модальным представлением контроллера, все работает нормально, пока mapviewcontroller loadView:
делает что-то еще. Вот код для лучшего понимания:
Если loadView:
так:
- (void)loadView{
UIView *faceUpView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1024, 718)];
self.view = faceUpView;
[faceUpView release];
MKMapView *mkMap = [[MKMapView alloc] initWithFrame:CGRectMake(0, 0, 1024, 718)];
mkMap.mapType = MKMapTypeStandard;
[self.view addSubview:mkMap];
[mkMap release];
}
не создает никаких проблем, вид, поэтому карта правильно визуализируется в TabBarController.
Вместо этого, если в loadView:
я инициализирую вид, подобный этому:
- (void)loadView{
//Initialize the MapView
MapView *mv = [[MapView alloc] initWithFrame:CGRectMake(0, 0, 1024, 718)];
mv.mapViewController = self;
self.mMapView = mv;
//Release of the local variable
[mv release];
}
зависает, как только я ставлю устройство «лицом вверх», даже если я оставляю только первую строку: MapView *mv = [[MapView alloc] initWithFrame:CGRectMake(0, 0, 1024, 718)];
Здесь реализация его инициализатора, MapView.m
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
self.layer.borderWidth = 2; //Set the border of the box
//State that the subviews are confined within its bounds
self.clipsToBounds = YES;
//Initialize the View that contains the map with position and size
// MKMapView *mv = [[MKMapView alloc] initWithFrame:CGRectMake(-106, -106, BOX_SIDE, BOX_SIDE)];
MKMapView *mv = [[MKMapView alloc] initWithFrame:CGRectMake(0, 0, BOX_WIDTH, BOX_HEIGHT)];
//Set the map as standard map (Not satellite nor Hybrid)
mv.mapType = MKMapTypeStandard;
//Retains the map
self.mapView = mv;
//Add the map to the super view
[self addSubview:mv];
//Release the map view previously allocated
[mv release];
}
return self;
}
Я не переопределял ни один из двухэтапных методов вращения, ни одноэтапный, как я читал в некоторых ответах.
Я действительно ценю любую помощь !!!!
Спасибо