2014-03-26 20 views
0

感謝您轉向:-)有沒有辦法在iPad上啓用表單工作表的視差?

我注意到,在iPad上,表格視圖沒有任何iOS 7視差效果,我真的很喜歡這個,因爲我覺得它看起來很酷。

No parallex effect *sad face*

嗯,這是我和它沒有這一點,所以是有辦法做到這一點?人們會怎麼做呢?我google和谷歌終於失敗了,因爲沒有適當的出現。

謝謝:)

回答

2

這可以做一些努力。

首先,你需要知道如何視差添加到普通視圖:

我有UIView以下類中的方法,可以很容易:

- (void)addDepthMotionX:(CGFloat)x y:(CGFloat)y { 
    Class clazz = NSClassFromString(@"UIInterpolatingMotionEffect"); 
    if (clazz) { 
     BOOL reverse = NO; 
     if (CGAffineTransformEqualToTransform(self.transform, CGAffineTransformMakeRotation(-M_PI_2)) || CGAffineTransformEqualToTransform(self.transform, CGAffineTransformMakeRotation(M_PI_2))) { 
      reverse = YES; 
     } 

     UIInterpolatingMotionEffect *eff = [[clazz alloc] initWithKeyPath:@"center.x" type:reverse ? UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis : UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis]; 
     eff.maximumRelativeValue = @(x); 
     eff.minimumRelativeValue = @(-x); 
     [self addMotionEffect:eff]; 
     eff = [[clazz alloc] initWithKeyPath:@"center.y" type:reverse ? UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis : UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis]; 
     eff.maximumRelativeValue = @(y); 
     eff.minimumRelativeValue = @(-y); 
     [self addMotionEffect:eff]; 
    } 
} 

的代碼守衛如此如果從iOS 7(或更高版本)以外調用,它不會崩潰。

我們添加視差你只需要做一個觀點:

[someView addDepthMotionX:10 y:10]; // pick an appropriate depth value 

的最後一步你的問題是這適用於正在顯示視圖控制器的根。

以下代碼可以添加到視圖控制器的viewWillAppear:方法中。調整以滿足您的需求:

,此代碼
- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 

    if (self.isBeingPresented || self.isMovingToParentViewController) { 
     if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && self.modalPresentationStyle == UIModalPresentationFormSheet) { 
      [self.navigationController.view.superview addDepthMotionX:15 y:15]; 
     } 
    } 
} 

的一個問題是,如果用戶旋轉iPad的90度的形式表提出後,視差效果需要更新。但是,這將讓你開始。

+0

這真的很酷!哇!我明白你的意思是90度的東西,幸運的是這是一個相當簡單的修復:-)非常感謝! – Gergy008

相關問題