swift3でタブバーでスクロールする方法を教えてください。
やっていて信じられないのですが、標準UIではタブバーがスクロールしないんですね。
以下は作成しました。
(1)UITabBarにより、ViewControllerを制御
(2)UITabBarControllerにより、ViewControllerを制御
簡単には以下のような感じです。
(1)UITabBarにより、ViewControllerを制御
swift3
1 override func viewDidLoad() { 2 super.viewDidLoad() 3 4 // 背景画像のセット 5 let backgroundImage = UIImage(named: "bg1")! 6 self.view.backgroundColor = UIColor(patternImage: backgroundImage) 7 8 // タブメニュー設定 9 let width = self.view.frame.width - 25 10 //デフォルトは49 11 let tabBarHeight:CGFloat = 58 12 /** TabBarを設置 **/ 13 myTabBar = MyTabBar() 14 //myTabBar.frame = CGRect(x:0,y:height - tabBarHeight,width:width,height:tabBarHeight) 15 myTabBar.frame = CGRect(x:0,y:20,width:width,height:tabBarHeight) 16 //バーの色 17 //myTabBar.barTintColor = UIColor.lightGray 18 myTabBar.barTintColor = UIColor(hex32: 0x00d3d3d3) 19 //選択されていないボタンの色 20 myTabBar.unselectedItemTintColor = UIColor.white 21 //ボタンを押した時の色 22 myTabBar.tintColor = UIColor(hex32: 0xff26C6DA) 23 //ボタンを生成 24 let tab1:UITabBarItem = UITabBarItem(title: "fav1", image: UIImage(named:"tabmenu_fav1"), tag: 1) 25 let tab2:UITabBarItem = UITabBarItem(title: "fav2", image: UIImage(named:"tabmenu_fav2"), tag: 2) 26 let tab3:UITabBarItem = UITabBarItem(title: "air", image: UIImage(named:"tabmenu_air"), tag: 3) 27 let tab4:UITabBarItem = UITabBarItem(title: "tv", image: UIImage(named:"tabmenu_tv"), tag: 4) 28 let tab5:UITabBarItem = UITabBarItem(title: "lei", image: UIImage(named:"tabmenu_lig"), tag: 5) 29 let tab6:UITabBarItem = UITabBarItem(title: "DVD", image: UIImage(named:"tabmenu_dvd"), tag: 6) 30 let tab7:UITabBarItem = UITabBarItem(title: "MENU", image: UIImage(named:"tabmenu_menu"), tag: 7) 31 //ボタンをタブバーに配置する 32 myTabBar.items = [tab1,tab2,tab3,tab4,tab5,tab6,tab7] 33 //デリゲートを設定する 34 myTabBar.delegate = self as UITabBarDelegate 35 36 self.view.addSubview(myTabBar) 37 myTabBar.selectedItem = tab3 38 }
切り替えは、別処理でtab1ViewCont.isHidden = falseで表示を切り替えています。
(2)UITabBarControllerにより、ViewControllerを制御
swift3
1 override func viewDidLoad() { 2 super.viewDidLoad() 3 4 // 名前を指定して Storyboard を取得する(Main.storyboard の場合) 5 let storyboard = UIStoryboard(name: "Main", bundle: nil) 6 let titem1 = storyboard.instantiateViewController(withIdentifier: "tabItem1") 7 let titem2 = storyboard.instantiateViewController(withIdentifier: "tabItem2") 8 let titem3 = storyboard.instantiateViewController(withIdentifier: "tabItem1") 9 let titem4 = storyboard.instantiateViewController(withIdentifier: "tabItem2") 10 let titem5 = storyboard.instantiateViewController(withIdentifier: "tabItem1") 11 let titem6 = storyboard.instantiateViewController(withIdentifier: "tabItem2") 12 let titem7 = storyboard.instantiateViewController(withIdentifier: "tabItem1") 13 14 //表示するtabItemを指定(今回はデフォルトのItemを使用) 15 titem1.tabBarItem = UITabBarItem(title: "fav1", image: UIImage(named:"tabmenu_fav1"), tag: 1) 16 titem2.tabBarItem = UITabBarItem(title: "fav2", image: UIImage(named:"tabmenu_fav2"), tag: 2) 17 titem3.tabBarItem = UITabBarItem(title: "air", image: UIImage(named:"tabmenu_air"), tag: 3) 18 titem4.tabBarItem = UITabBarItem(title: "tv", image: UIImage(named:"tabmenu_tv"), tag: 4) 19 titem5.tabBarItem = UITabBarItem(title: "lei", image: UIImage(named:"tabmenu_lig"), tag: 5) 20 titem6.tabBarItem = UITabBarItem(title: "DVD", image: UIImage(named:"tabmenu_dvd"), tag: 6) 21 titem7.tabBarItem = UITabBarItem(title: "MENU", image: UIImage(named:"tabmenu_menu"), tag: 7) 22 23 // タブで表示するViewControllerを配列に格納します。 24 let myTabs = NSArray(objects: titem1, titem2, titem3, titem4, titem5, titem6, titem7) 25 26 // 配列をTabにセットします。 27 self.setViewControllers(myTabs as? [UIViewController], animated: false) 28 29 30 // 変数の代入 31 /*firstView = item1ViewController() 32 secondView = item2ViewController() 33 34 //表示するtabItemを指定(今回はデフォルトのItemを使用) 35 firstView.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.featured, tag: 1) 36 secondView.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.bookmarks, tag: 2) 37 38 // タブで表示するViewControllerを配列に格納します。 39 let myTabs = NSArray(objects: firstView!, secondView!) 40 41 // 配列をTabにセットします。 42 self.setViewControllers(myTabs as? [UIViewController], animated: false) 43 44 self.selectedIndex = 2*/ 45 46 }
また、スクロール付きタブバー "InfiniTabBar"も見つけましたが、こちらはSwift3で使えるのでしょうか?
やり方のわかるURLなどあればご教授ください。
どのようにやるのが一番良いのかアドバイスください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/27 09:06