蘋果文檔(https://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/presentViewController:animated:completion :)說「在iPhone和iPod touch,所提出的觀點始終是全屏幕」。但在iOS 7中,有自定義視圖控制器轉換API。已經有很多演示顯示「presentsViewController」可以是我們想要的任何大小。蘋果的Doc在這種情況下不是真的嗎?「呈現視圖控制器始終全屏」不適用於iOS 7自定義轉換?
0
A
回答
4
相信蘋果仍然是正確的,儘管也許是誤導。它會默認呈現全屏,但如果你提供一個自定義的過渡代表,你可以做任何你想要的框架,等等......
蘋果是什麼意思全屏(在這種情況下,我認爲),是它的邊緣延伸到設備的最大寬度&。以前它會通過之類的導航欄,或可能已添加其它工具欄的限制,但默認情況下在iOS的7,他們不會再尊重他們。
然而,隨着定製化,你現在可以有一個較小的視圖控制器覆蓋通過改變尺寸的轉變過程中它的框架另一個視圖控制器。見特安&鬆懈的真棒過渡API後這裏的一個例子:
http://www.teehanlax.com/blog/custom-uiviewcontroller-transitions/
這裏是爲到視圖控制器上的幀設置爲這顯然不會是全屏的值-animateTransition
方法。記下endFrame
變量設置了線路:
- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext {
// Grab the from and to view controllers from the context
UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
// Set our ending frame. We'll modify this later if we have to
CGRect endFrame = CGRectMake(80, 280, 160, 100); // <- frame is only 160 x 100
if (self.presenting) {
fromViewController.view.userInteractionEnabled = NO;
[transitionContext.containerView addSubview:fromViewController.view];
[transitionContext.containerView addSubview:toViewController.view];
CGRect startFrame = endFrame;
startFrame.origin.x += 320;
toViewController.view.frame = startFrame;
[UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
fromViewController.view.tintAdjustmentMode = UIViewTintAdjustmentModeDimmed;
toViewController.view.frame = endFrame;
} completion:^(BOOL finished) {
[transitionContext completeTransition:YES];
}];
}
else {
toViewController.view.userInteractionEnabled = YES;
[transitionContext.containerView addSubview:toViewController.view];
[transitionContext.containerView addSubview:fromViewController.view];
endFrame.origin.x += 320;
[UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
toViewController.view.tintAdjustmentMode = UIViewTintAdjustmentModeAutomatic;
fromViewController.view.frame = endFrame;
} completion:^(BOOL finished) {
[transitionContext completeTransition:YES];
}];
}
}
因此,提供定製化的視圖控制器,當你從和到過渡將您指定爲他們取的邊緣和/或幀。當你開始自定義轉換時,它們不會突然全屏顯示,所以Apple是正確的,但可能不完全透徹地解釋當前方法的描述。
相關問題
- 1. ios 7自定義轉換不適用於導航控制器
- 2. iOS 7呈現視圖控制器與自定義轉換沒有動畫
- 3. 微調控制器視圖的自定義適配器始終禁用
- 4. 在自定義視圖控制器轉換期間閃爍iOS 7
- 5. ios swift自定義轉換爲從視圖控制器變暗
- 6. 呈現自定義選項卡視圖控制器但出現黑屏
- 7. 如何開始複製Apple在iOS 7中使用的自定義視圖控制器轉換?
- 8. 用導航呈現自定義大小的視圖控制器
- 9. ios 8更改呈現/模式視圖控制器的大小
- 10. iOS自定義視圖控制器
- 11. iOS - 呈現視圖控制器從一個呈現的視圖控制器更改其高度
- 12. 呈現視圖控制器
- 13. 動畫呈現控制器視圖,而動畫呈現控制器視圖
- 14. 從自定義UIView(xib文件)呈現視圖控制器
- 15. 在故事板中呈現自定義視圖控制器?
- 16. 從自定義工具欄中呈現視圖控制器
- 17. IOS莫代爾視圖控制器呈現黑色屏幕
- 18. 非全屏視圖控制器強制旋轉IOS
- 19. 自動呈現視圖控制器
- 20. 辭退呈現視圖控制器,呈現視圖控制器已經發布
- 21. 旋轉呈現的視圖並鎖定呈現視圖控制器的方向
- 22. 用IBOutlets初始化視圖控制器到自定義視圖
- 23. 的UITextView呈現自定義字體錯誤地適用於iOS 7
- 24. iOS在UIModalTransitionStylePartialCurl視圖控制器上的全屏視圖
- 25. iPad/iOS7:'頁面'模式視圖控制器在呈現'全屏'視圖控制器後出現奇怪行爲
- 26. iOS呈現基於模態和導航控制器的視圖
- 27. iOS 7使用UINavigationController自定義轉換
- 28. 可以呈現視圖控制器也是一個呈現視圖控制器?
- 29. 從所呈現的視圖控制器訪問呈現視圖控制器?
- 30. 視圖控制器不是全屏
蘋果的文檔都很好。我想,你只是忘記了,當你自定義,你可以做任何你想要的幀/邊界/邊緣的過渡,等... – Aaron
默認情況下的一道風景iPhone 6+會適應全屏演示成一個模式的形式表,所以在技術上文檔是錯誤的。當您在縱向和橫向之間來回旋轉時,iPhone 6+甚至會在全屏和模式表單之間自動切換。 –
@Aaron文檔有些誤導。是的,在說明所提供的視圖是「全屏」的情況下,您在技術上是正確的,但這對大多數API文檔消費者沒有幫助。 Apple文檔需要更新以清楚地表明呈現的視圖可以具有完全自定義的_appearance_,包括不出現全屏的外觀。這不僅僅是一個小小的風格問題:這是一個基本的可用性問題,它使得API突然變得更具吸引力和易於理解。 – Womble