質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

362閲覧

iPhone開発(swift3)で、タブバーでスクロールする方法

yamayamak

総合スコア131

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/04/27 08:36

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などあればご教授ください。

どのようにやるのが一番良いのかアドバイスください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

やっていて信じられないのですが、標準UIではタブバーがスクロールしないんですね。

アップル的にはタブは5つまでですからね。

「ios タブバー スクロール」でググると何個か見つかります。
TabPageViewControllerは、ここでも何回か質問を見たことがありますね。

投稿2017/04/27 08:55

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamayamak

2017/04/27 09:06

なるほど、標準では、タブが5個までなんですね。 Googleはそうなんですが、似たようなのが出てきて真似てるんですが。。。 いまいち解決できてないです。
guest

0

自己解決

(1)の方法にスクロールビューにタブバーをセットすることで解決できました。
色々ありがとうございました。

参考まで以下は記載しているコードです。一番左がボタンになるので、25空けてます。
色々ありがとうございました。

swift3

1// スクロールビューのセット 2let scrollView = UIScrollView() 3let tabBarHeight:CGFloat = 58 4//scrollView.backgroundColor = UIColor.gray 5// 表示窓のサイズと位置を設定 6let width = self.view.frame.width - 25 7scrollView.frame.size = CGSize(width: width, height: tabBarHeight) 8//scrollView.center = self.view.center 9scrollView.frame = CGRect(x:25,y:20,width:width,height:tabBarHeight) 10// 中身の大きさを設定 11scrollView.contentSize = CGSize(width: 500, height: tabBarHeight) 12 13・・・(中略、質問のタブバー記述を参考ください)・・・ 14scrollView.delegate = self as? UIScrollViewDelegate 15myTabBar.delegate = self as UITabBarDelegate 16myTabBar.selectedItem = tab3 17 18// ScrollViewの中身を作る 19scrollView.addSubview(myTabBar) 20self.view.addSubview(scrollView)

投稿2017/04/27 09:36

編集2017/04/27 10:09
yamayamak

総合スコア131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問