2012-10-11 73 views
1

我知道有很多關於它發佈,但我找不到最好的解決方案。不要旋轉UIView,但旋轉UIImageView的內部它

我有一個「持有人」視圖(UIView),其中包含許多橫向拉伸橫向模式的scrollView。每個滾動視圖都包含視圖的包含圖像,這些圖像是垂直滾動的。再次,整個事情是在景觀。

我想要的是,當我旋轉到肖像模式時,包含所有內容的「持有者」視圖保持不變,這意味着現在是一列,滾動視圖旋轉意味着滾動是水平的,但滾動視圖的內容)旋轉。

我試着寫一個UIView子類(爲「持有人」的觀點),並把下面的方法:

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

在我希望處理的子觀點居住在我的「持有人以同樣的方式「看法,但那不行。最好的辦法是什麼?謝謝。

回答

1

您可以設置您支持的方向是您想要的方向,並且觀察UIDevice方向更改以手動處理其他方向。在這裏你有一個例子:

#import "ViewController.h" 

@interface ViewController() 

- (void)deviceDidRotate:(NSNotification *)notification; 

@end 

@implementation ViewController 

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(deviceDidRotate:) 
               name:UIDeviceOrientationDidChangeNotification 
               object:nil]; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 

    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight); 
} 

#pragma mark - Private methods 

- (void)deviceDidRotate:(NSNotification *)notification { 

    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 
    /* Handle manually the rotation 
     For instance, apply a transform to a UIView: 
     CGAffineTransform transform = CGAffineTransformMakeRotation(radians); 
     self.aView.transform = transform; */ 
} 

@end 
+0

謝謝,CGAffineTransform是我一直在尋找。我還有一個關於語法的問題。我把一些對象放在一個數組中,並想旋轉這些對象,就像for(loop thorugh array){CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI/2.0); [[myLetterObjects objectAtIndex:i]] transform = transform;}語法如何在這裏工作?點像[myLetterObjects objectAtIndex:i] .transform = transform;不會這樣做。 –

+0

@Au Ris在循環內部:UIView * aView = [myLetterObjects objectAtIndex:i]; [aView setTransform:transform]; – atxe