сбой двухэтапной ротации анимации контроллера iOS - PullRequest
1 голос
/ 08 декабря 2011

Я столкнулся с проблемой, которая сводит меня с ума. Я читал об этом вокруг, но я не нашел решения. Я разрабатываю приложение, которое представляет модально контроллеры представления в зависимости от ориентации устройства. Когда ориентация устройства обращена вверх, 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;
}

Я не переопределял ни один из двухэтапных методов вращения, ни одноэтапный, как я читал в некоторых ответах.

Я действительно ценю любую помощь !!!! Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...