我有一個特定的場景,我試圖效仿,而且對於Cocoa Touch來說相當新,我不確定完成它的最佳方式。請原諒我缺乏的戰術知識;希望有一些清晰的說明會有所幫助。如何完成兩個UIViews之間的「90%幻燈片」
我想效仿:
的應用程序,我正在看(尤其)是Beat。下面是他們的UIViews的一個例子 - 特別是,注意底部設置的齒輪圖標。
當該齒輪被觸摸或刷卡時,出現兩種主要的UIView變化:
- 原來的UIView向上滑動屏幕大約90%的方式(所述鍵點因爲它不會滑動全部的方式)。
- 一個新的UIView滑了起來,以填補這個新騰出的90%的空間。
這是我想完成的基本功能。
實現思路#1:單UIViewController的W /多UIViews
起初,我認爲有一個單一的UIViewController同時管理的 「主」 和 「設置」 的觀點。在這種情況下,以適當的方式轉換這些視圖將是一件相當簡單的事情。
這就是說,這對我來說似乎有點混亂。根據我的兩套功能的強大程度,這是重載單個UIViewController的祕訣。你可能會告訴我,沒關係,但蝙蝠,似乎太多了。
實現思路#2:多個UIViewControllers在自定義容器視圖控制器
這是目前我要下去的路線。
- (void)flipFromViewController:(UIViewController *)fromController
toViewController:(UIViewController *)toController
{
CGFloat width = self.view.frame.size.width;
CGFloat height = self.view.frame.size.height;
fromController.view.frame = CGRectMake(0.0f, 0.0f, width, height);
toController.view.frame = CGRectMake(0.0f, height, width, height);
[self addChildViewController:toController];
[fromController willMoveToParentViewController:nil];
[self transitionFromViewController:fromController
toViewController:toController
duration:0.5f
options:UIViewAnimationOptionTransitionNone
animations:^(void) {
fromController.view.frame = CGRectMake(0.0f, -(height - 100.0f), width, height);
toController.view.frame = CGRectMake(0.0f, 100.0f, width, height);
}
completion:^(BOOL finished) {
[fromController removeFromParentViewController];
[toController didMoveToParentViewController:self];
}];
}
與此問題是過渡:它似乎沒有停止「90%它通過分離兩個分立的功能集成單獨UIViewControllers(包含在容器內的ViewController)和轉換這兩者之間的方式」。它看起來更像是打算完全轉換出一個「舊」控制器和一個「新」控制器,即使我對兩個UIViews的幀調整不應該是「完成」的動作。
在哪裏,我想指導
我不要求一個完整的解決方案 - 您的專業知識過於昂貴。 :)這就是說,對於這一點來說是相當新的,我很想知道你的正確方法是什麼。請讓我知道我是否可以提供進一步的信息。
謝謝!
這就是訣竅!非常感謝。 – ABach