簡體   English   中英

ViewController方向更改

[英]ViewController orientation change

當iPhone將方向更改為橫向時,我正在推動ViewController,但在更改ViewController的方向時遇到了麻煩。

我使用了該代碼:

    - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
Storage *strg = [Storage sharedStorage];

if ([strg.orient intValue] == 2) 
{
    [[UIApplication sharedApplication] setStatusBarOrientation:
     UIInterfaceOrientationLandscapeRight];

    UIScreen *screen = [UIScreen mainScreen];
    CGFloat screenWidth = screen.bounds.size.width;
    CGFloat screenHeight = screen.bounds.size.height;
    UIView *navView = [[self navigationController] view];
    navView.bounds = CGRectMake(0, 0, screenHeight, screenWidth);
    navView.transform = CGAffineTransformIdentity;
    navView.transform = CGAffineTransformMakeRotation(1.57079633);
    navView.center = CGPointMake(screenWidth/2.0, screenHeight/2.0);
    [UIView commitAnimations];
}
if ([strg.orient intValue] == 1)
{
    [[UIApplication sharedApplication] setStatusBarOrientation:
     UIInterfaceOrientationLandscapeLeft];

    UIScreen *screen = [UIScreen mainScreen];
    CGFloat screenWidth = screen.bounds.size.width;
    CGFloat screenHeight = screen.bounds.size.height;
    UIView *navView = [[self navigationController] view];
    navView.bounds = CGRectMake(0, 0, screenHeight, screenWidth);
    navView.transform = CGAffineTransformIdentity;
    navView.transform = CGAffineTransformMakeRotation(4.71238898);
    navView.center = CGPointMake(screenWidth/2.0, screenHeight/2.0);
    [UIView commitAnimations];
}
}

結果不一致。 有時它會朝正確的方向,有時會顛倒。

當我從LandcapeRight移至LandscapeLeft海峽(反之亦然)時,它工作正常,問題僅在我進入人像模式時。

有什么想法我做錯了嗎?

如果您確實在響應設備方向更改,則可能不應該使用setStatusBarOrientation。 我認為您最好使用shouldAutorotateToInterfaceOrientation和deviceDidRotateSelector通知使視圖控制器旋轉到支持的方向。

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(deviceDidRotateSelector:) name: UIDeviceOrientationDidChangeNotification object: nil];

-(void)deviceDidRotateSelector:(NSNotification*) notification {
// respond to rotation here
}


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
//Return YES for supported orientations
return YES;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM