我試圖模仿雅虎天氣應用程序之間的城市屏幕過渡,我無法弄清楚它是什麼樣的轉換。任何線索?找不到在yahoo天氣應用程序中使用的uiview轉換
我真的很感激你的時間。 感謝
編輯:
我其中有一個子視圖slideView CTRLER。 sliderview有一個圖像,子視圖有文本。當我進行滑動操作時,帶文本的文本視圖必須以較慢的速度移動並拖動視圖ctrler,並且該實習生應該開始拖動下一個視圖ctrler,該視圖ctrler是滑塊Ctrler的一個實例。
我試圖模仿雅虎天氣應用程序之間的城市屏幕過渡,我無法弄清楚它是什麼樣的轉換。任何線索?找不到在yahoo天氣應用程序中使用的uiview轉換
我真的很感激你的時間。 感謝
編輯:
我其中有一個子視圖slideView CTRLER。 sliderview有一個圖像,子視圖有文本。當我進行滑動操作時,帶文本的文本視圖必須以較慢的速度移動並拖動視圖ctrler,並且該實習生應該開始拖動下一個視圖ctrler,該視圖ctrler是滑塊Ctrler的一個實例。
它不是默認的,但我在舊的應用程序在你的視圖實現類似於它
註冊的手勢和檢測設置isFromLeftSide
相應
呼叫以下。做微調該按您的要求
[self.view addSubview:mySlidingView];
mySlidingView.frame = // set offscreen frame, in the direction you want it to appear from depending on flag isFromLeftSide
[UIView animateWithDuration:8.0
animations:^{
mySlidingView.frame = // desired end location
}];
沒有內置的過渡,這是否對你(我假設你在談論的是在不同的轉變他們的frame
/center
圖像比視圖本身更高)。你可能必須自己寫。需要對手勢識別器和視圖動畫有一些基本的熟悉。
基本效果是在更改這些視圖(或其超視圖)的frame
時,同時調整兩個圖像視圖的center
屬性。 (或者,你可以通過使圖像視圖達到這個效果,其contentMode
是UIViewContentModeCenter
並且只是改變frame
。)我建議你從一些簡單的效果測試開始並從那裏開始構建。
例如,我創建了具有兩個圖像視圖,其自動佈局約束條件定義如下場景:
H:|[leftImageView][rightImageView]| V:|[leftImageView]| V:|[rightImageView]|
我然後限定的寬度約束爲leftImageView
,並迷上它到IBOutlet
爲那個約束,例如leftImageWidthConstraint
。然後,我有一個UIPanGestureRecognizer
可以處理手勢,簡單地改變這個leftImageWidthConstraint
據此(並帶有自動佈局,幀的其餘部分將自動爲我從計算):
- (void)handlePan:(UIPanGestureRecognizer *)gesture
{
CGPoint translate = [gesture translationInView:gesture.view];
static CGFloat width;
if (gesture.state == UIGestureRecognizerStateBegan)
{
width = self.leftImageWidthConstraint.constant;
}
CGFloat newWidth = width + translate.x;
if (newWidth < 0)
newWidth = 0;
else if (newWidth > self.view.bounds.size.width)
newWidth = self.view.bounds.size.width;
self.leftImageWidthConstraint.constant = newWidth;
// if you let go, animate the views to their final position
if (gesture.state == UIGestureRecognizerStateEnded)
{
// if more than half way, set left view's target width to take up full width,
// otherwise set left view's target width to zero
if (newWidth > (self.view.bounds.size.width/2.0))
newWidth = self.view.bounds.size.width;
else
newWidth = 0;
// animate the changing of the constraint (and thus the `frame`) accordingly
self.leftImageWidthConstraint.constant = newWidth;
[UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
[self.view layoutIfNeeded];
} completion:nil];
}
}
因此,當我平移跨越,兩個圖像剪裁的幀中的中心:
這是一個非常基本實現的想法。儘管如此,還是有大量的實現細節(自定義容器vs子視圖,自動佈局vs不是,等等),所以除非你回答其中的一些問題,否則很難更具體。
感謝您的寶貴答案。這是我要走的方向。我雖然我需要使用附件行爲。我已經編輯了具體描述的答案。 – pa12
並非所有人都使用雅虎天氣應用程序(它也可能會更改)。添加一兩張圖片或更好地描述你想要達到的目標。 – rmaddy