0
感謝您轉向:-)有沒有辦法在iPad上啓用表單工作表的視差?
我注意到,在iPad上,表格視圖沒有任何iOS 7視差效果,我真的很喜歡這個,因爲我覺得它看起來很酷。
嗯,這是我和它沒有這一點,所以是有辦法做到這一點?人們會怎麼做呢?我google和谷歌終於失敗了,因爲沒有適當的出現。
謝謝:)
感謝您轉向:-)有沒有辦法在iPad上啓用表單工作表的視差?
我注意到,在iPad上,表格視圖沒有任何iOS 7視差效果,我真的很喜歡這個,因爲我覺得它看起來很酷。
嗯,這是我和它沒有這一點,所以是有辦法做到這一點?人們會怎麼做呢?我google和谷歌終於失敗了,因爲沒有適當的出現。
謝謝:)
這可以做一些努力。
首先,你需要知道如何視差添加到普通視圖:
我有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度的形式表提出後,視差效果需要更新。但是,這將讓你開始。
這真的很酷!哇!我明白你的意思是90度的東西,幸運的是這是一個相當簡單的修復:-)非常感謝! – Gergy008