iOSでタブを切り替えるには、画面上の任意の場所で左右にスワイプできますか?おかげiOS:タブ間で左右にスワイプできますか?
例1:単純にスワイプして、カレンダー上ヶ月の間の切り替えは、左/右 例2:0:12 http://www.youtube.com/watch?v=5iX4vcsSst8
iOSでタブを切り替えるには、画面上の任意の場所で左右にスワイプできますか?おかげiOS:タブ間で左右にスワイプできますか?
例1:単純にスワイプして、カレンダー上ヶ月の間の切り替えは、左/右 例2:0:12 http://www.youtube.com/watch?v=5iX4vcsSst8
確かで、それが可能だ開始します。
すべての画面でスワイプをUISwipeGestureRecognizer
にする必要があります。その後、タブバーを呼び出して目的の操作を実行します。アクティブなタブを増減することから、あなたが望むものまで何でもかまいません。
コードの重複防止のために、カスタムUIViewController
を作成し、そこからすべてのビューコントローラを継承させることができます(またはいくつかの方法があります)。
タブバーコントローラを使用している場合、各タブのビューでスワイプジェスチャ認識機能を設定できます。ジェスチャ認識ツールがトリガされると、tabBarController.selectedTabIndexが変更されます
このエフェクトはアニメートされませんが、スワイプジェスチャでタブが切り替わります。これは、私がUITabBarで左右のボタンとスワイプのジェスチャーを使ってアクティブなタブを変更するアプリを持っていたときとほぼ同じでした。
- (void)viewDidLoad
{
[super viewDidLoad];
UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(tappedRightButton:)];
[swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
[self.view addGestureRecognizer:swipeLeft];
UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(tappedLeftButton:)];
[swipeRight setDirection:UISwipeGestureRecognizerDirectionRight];
[self.view addGestureRecognizer:swipeRight];
}
- (IBAction)tappedRightButton:(id)sender
{
NSUInteger selectedIndex = [rootVC.tabBarController selectedIndex];
[rootVC.tabBarController setSelectedIndex:selectedIndex + 1];
}
- (IBAction)tappedLeftButton:(id)sender
{
NSUInteger selectedIndex = [rootVC.tabBarController selectedIndex];
[rootVC.tabBarController setSelectedIndex:selectedIndex - 1];
}
私はそうのようなpageviewcontrollerに全体の事を埋め込むことをお勧めします
私は問題をチェックするのがとても嬉しいです。Richard KIM – LKM
はこれを試してみてください、
- (void)viewDidLoad
{
[super viewDidLoad];
UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(tappedRightButton:)];
[swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
[self.view addGestureRecognizer:swipeLeft];
UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(tappedLeftButton:)];
[swipeRight setDirection:UISwipeGestureRecognizerDirectionRight];
[self.view addGestureRecognizer:swipeRight];
}
- (IBAction)tappedRightButton:(id)sender
{
NSUInteger selectedIndex = [rootVC.tabBarController selectedIndex];
[self.tabBarController setSelectedIndex:selectedIndex + 1];
//To animate use this code
CATransition *anim= [CATransition animation];
[anim setType:kCATransitionPush];
[anim setSubtype:kCATransitionFromRight];
[anim setDuration:1];
[anim setTimingFunction:[CAMediaTimingFunction functionWithName:
kCAMediaTimingFunctionEaseIn]];
[self.tabBarController.view.layer addAnimation:anim forKey:@"fadeTransition"];
}
- (IBAction)tappedLeftButton:(id)sender
{
NSUInteger selectedIndex = [rootVC.tabBarController selectedIndex];
[self.tabBarController setSelectedIndex:selectedIndex - 1];
CATransition *anim= [CATransition animation];
[anim setType:kCATransitionPush];
[anim setSubtype:kCATransitionFromRight];
[anim setDuration:1];
[anim setTimingFunction:[CAMediaTimingFunction functionWithName:
kCAMediaTimingFunctionEaseIn]];
[self.tabBarController.view.layer addAnimation:anim forKey:@"fadeTransition"];
}
ありがとう、本当に助かります。 –
あなたはUITabBarConroller
すべてのあなたの子供のViewControllersを使用していることができますと仮定すると、あなたのためにすべての重労働を行うクラスから継承する。
これは私がUITabControllersの一部であるすべてのあなたのviewcontrollersがSwipableTabVC
の代わりのUIViewControllerを継承することができます
class SwipableTabVC : UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let left = UISwipeGestureRecognizer(target: self, action: #selector(swipeLeft))
left.direction = .left
self.view.addGestureRecognizer(left)
let right = UISwipeGestureRecognizer(target: self, action: #selector(swipeRight))
right.direction = .right
self.view.addGestureRecognizer(right)
}
func swipeLeft() {
let total = self.tabBarController!.viewControllers!.count - 1
tabBarController!.selectedIndex = min(total, tabBarController!.selectedIndex + 1)
}
func swipeRight() {
tabBarController!.selectedIndex = max(0, tabBarController!.selectedIndex - 1)
}
}
をそれを行っている方法です。
元の投稿のAndroidのYouTubeの例のようにアニメーション化することはできませんか? – user1689272
私は過去にもっと流動的なタブコントロールを作成しましたが、これは上記のタブバーの例よりもはるかにカスタムのソリューションでした。前回私がそういったことをしたとき、私は横に並んだセクションビューコントローラーをすべて含んだ、本当に長いビューコントローラーを作成しました(VCが画面幅の5倍になるように5つのセクションがありました)。ナビゲーションは、コンテナVCを左右にスライドさせることを含む。すべてのVCが常にメモリに常駐するので、これは最善の方法ではありませんが、私が必要なものを得るためには最高の方法です。残念ながら、そのコードスニペットを表示することはできません。 – skladek
iOS7では、この効果を達成するために、カスタムビューコントローラのトランジションで「UIPercentDrivenInteractiveTransition」を使用することができます。基本的には、スライドを行うためのカスタムプッシュ/ポップアニメーションを備えたナビゲーションコントローラがあります。 UIPercentDrivenInteractiveTransitionは、トランジションをスワイプではなくパンとして追跡することを許可します。 – skladek