Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > iOS > Черный экран при смене представления в эмуляторе


Автор: Dmitry1987 7.4.2014, 09:47
Есть 2 представления - книжное и альбомное. При запуске отображается книжное представление. При смене представления с книжного на альбомное (cmd + right) - отображается черный экран. Что не так?

Код

//
//  ViewController.h
//  swap3
//
//  Created by 0xdeadc0de on 05.04.14.
//  Copyright (c) 2014 0xdeadc0de. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (strong, nonatomic) IBOutlet UIView *portrait;
@property (strong, nonatomic) IBOutlet UIView *landscape;
@end


Код

//
//  ViewController.m
//  swap3
//
//  Created by 0xdeadc0de on 05.04.14.
//  Copyright (c) 2014 0xdeadc0de. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#define degreesToRadians(x) (M_PI * (x) / 180)

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if (toInterfaceOrientation == UIInterfaceOrientationPortrait) {
       
        self.view = self.portrait;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(0));
        self.view.bounds = CGRectMake(0.0, 0.0, 320.0, 460.0);
        
    } else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
       
        self.view = self.landscape;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(-90));
        self.view.bounds = CGRectMake(0.0, 0.0, 480.0, 300.0);
        
    } else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
        
        self.view = self.landscape;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(90));
        self.view.bounds = CGRectMake(0.0, 0.0, 480.0, 300.0);
   
    }   
}
@end

Автор: Bitter 7.4.2014, 11:13
а где вы их создаете? И почему нельзя обойтись одним, ведь есть же autoresizing и autolayout 

Автор: Dmitry1987 7.4.2014, 13:12
Цитата(Bitter @  7.4.2014,  09:13 Найти цитируемый пост)
И почему нельзя обойтись одним, ведь есть же autoresizing и autolayout 


Это все так, для расширения кругозора.
 
Цитата(Bitter @  7.4.2014,  09:13 Найти цитируемый пост)
а где вы их создаете?


Не совсем понимаю, что вы имеете ввиду? Делаю пример из книги "iOS 6 SDK. Разработка приложений для iPhone, iPad и iPod touch". Создаю single view application. В storyboard существует один View - portrait. Создаю еще один View и делаю его landscape. Дальше связываю их с переменными. Или я что-то не понимаю?

Автор: Jove1970 17.10.2014, 22:09
жалко

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)