簡體   English   中英

如何在兩個UIView之間完成“ 90%的滑動”

[英]How to accomplish a “90% slide” between two UIViews

我有一個特定的場景正在嘗試模仿,但是對於Cocoa Touch來說還很陌生,我不確定實現它的最佳方法。 請原諒我缺乏戰術知識; 希望一些明確的闡述會有所幫助。

我想模仿的是:

我正在查看的應用程序特別是Beat 以下是其中一個UIView的示例-特別是,請注意底部的“設置”齒輪圖標。

在此處輸入圖片說明

觸摸或滑動該齒輪時,將發生兩個主要的UIView更改:

  1. 原來的UIView向上滑動屏幕的方式約90%( 關鍵點是,它並沒有一路上漲滑動)。
  2. 新的UIView向上滑動以填充新騰出的90%空間。

在此處輸入圖片說明

這是我要完成的基本功能。

實現思路1:單個UIViewController帶有多個UIViews

最初,我考慮使用一個UIViewController來管理“主”視圖和“設置”視圖。 在那種情況下,以適當的方式轉換這些視圖將是相當簡單的事情。

也就是說,這對我來說似乎有些混亂。 根據我兩組功能的健壯性,這是使單個UIViewController重載的秘訣。 您可能會告訴我,這沒關系,但事實並非如此。

實現思路2:自定義容器ViewController中有多個UIViewController

這是我目前要走的路線。 它將兩個離散的功能集分離為單獨的UIViewControllers(包含在Container ViewController中),並通過以下兩種方法在兩者之間進行轉換:

- (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%的方式”。 盡管我在兩個UIView上的幀調整不應該是“完整的”動作,但看起來它似乎打算完全過渡為“舊”控制器和“新”控制器。

我要指導的地方

我並不是要一個完整的解決方案-您的專業知識將太昂貴了。 :)就是說,由於這還不算新,我希望您能對正確的方法有所了解。 如果可以提供更多信息,請告訴我。

謝謝!

我確實認為您的第二個方法是在正確的軌道上,並且您對使用transitionFromViewController:ToViewController的直覺也是正確的-如果您希望兩個視圖控制器都存在並處於活動狀態,則我不會使用該方法。 因此,我希望齒輪視圖的控制器成為自定義容器控制器的子視圖控制器,然后像您一樣將第二個子窗口添加到屏幕底部。 然后使用animateWithDuration動畫兩個視圖:...最后,動畫應具有所需的內容,並且容器控制器將具有兩個子代。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM