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

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

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

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

Q&A

解決済

3回答

3656閲覧

SwiftでSmartNews風のタブメニューを実装したい

退会済みユーザー

退会済みユーザー

総合スコア0

Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

0グッド

0クリップ

投稿2016/11/20 20:21

初めて質問させて頂きます。
Swift初心者です。(プログラム自体そんなに詳しくありません)
今まで主にJavaで開発をしていました。
xcodeにてSmartNews風のタブメニューを実装したいのですがエラーが発生し止まっている状態です。
どなたか教えていただけませんでしょうか。

###参考にしたサイト

・PageMenu http://qiita.com/yuinchirn/items/4716ae2326a4949bdc98 http://qiita.com/tjnet/items/e205c43c35a187f60ecc 上記サイトに書いてあるとおり、GitHubからPageMenu.zipをダウンロードし、 CAPSPageMenu.swiftをプロジェクト直下のフォルダに配置しました。 プロジェクトディレクトリのPodsディレクトリとかに置いたほうが良いんでしょうか?

###発生している問題・エラーメッセージ

●エラー1 viewControllerにて UIColor.blueColor() 等のColor指定部分でエラーが発生するがUIColor.blueに書き直すとエラーが消える。 ●エラー2 pageMenu = CAPSPageMenu(viewControllers: controllerArray, frame: CGRectMake(0.0, 20.0, self.view.frame.width, self.view.frame.height), pageMenuOptions: parameters) にて'CGRectMake'is unvailable in swift 上記エラーが発生し、解消できない。 ●不明点1 CAPSPageMenu.swiftをプロジェクト名直下のフォルダに配置しましたが プロジェクトディレクトリのPodsディレクトリとかに置いたほうが良いんでしょうか? ●不明点2 ちゃんとPageMenuライブラリを使用できる状態になっているののでしょうか 情報不足でこれじゃ教えられない等ありましたらおっしゃって頂ければ追加させていただきます。よろしくお願いいたします。

###該当のソースコード

Swift

1import UIKit 2 3class ViewController: UIViewController { 4 var pageMenu : CAPSPageMenu? 5 6 // 初期読み込み時処理 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Viewを格納する配列 10 var controllerArray : [UIViewController] = [] 11 12 // 追加するViewを作成 13 let controller1 : UIViewController = UIViewController() 14 controller1.title = "ビューその1" 15 controller1.view.backgroundColor = UIColor.blueColor() 16 controllerArray.append(controller1) 17 18 let controller2 : UITableViewController = UITableViewController() 19 controller2.title = "ビューその2" 20 controller2.view.backgroundColor = UIColor.redColor() 21 controllerArray.append(controller2) 22 23 let controller3 : UITableViewController = UITableViewController() 24 controller3.title = "ビューその3" 25 controller3.view.backgroundColor = UIColor.greenColor() 26 controllerArray.append(controller3) 27 28 // PageMenuの設定 29 let parameters: [CAPSPageMenuOption] = [ 30 .MenuItemSeparatorWidth(4.3), 31 .UseMenuLikeSegmentedControl(true), 32 .MenuItemSeparatorPercentageHeight(0.1) 33 ] 34 35 // PageMenuのビューのサイズを設定 36 pageMenu = CAPSPageMenu(viewControllers: controllerArray, frame: CGRectMake(0.0, 20.0, self.view.frame.width, self.view.frame.height), pageMenuOptions: parameters) 37 38 // PageMenuのビューを親のビューに追加 39 self.view.addSubview(pageMenu!.view) 40 // PageMenuのビューをToolbarの後ろへ移動 41 self.view.sendSubview(toBack: pageMenu!.view) 42 } 43 override func didReceiveMemoryWarning() { 44 super.didReceiveMemoryWarning() 45 // Dispose of any resources that can be recreated. 46 }

###試したこと
その他に
・RMPMenuBarController
https://tech.recruit-mp.co.jp/mobile/scrollable-menu-bar-view-controller/

上記ライブラリもcocoapodでインストールして試してみましたが上手くいきませんでした。
正しくライブラリ追加が行えているかどうかもわからない状況です。
こちらも教えていただけないでしょうか。

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

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

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

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

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

guest

回答3

0

swift

1// swift 3.0 2 3import UIKit 4 5class ViewController: UIViewController { 6 var pageMenu : CAPSPageMenu? 7 8 // 初期読み込み時処理 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 // Viewを格納する配列 12 var controllerArray : [UIViewController] = [] 13 14 // 追加するViewを作成 15 let controller1 : UIViewController = UIViewController() 16 controller1.title = "ビューその1" 17 controller1.view.backgroundColor = UIColor.blue 18 controllerArray.append(controller1) 19 20 let controller2 : UITableViewController = UITableViewController() 21 controller2.title = "ビューその2" 22 controller2.view.backgroundColor = UIColor.red 23 controllerArray.append(controller2) 24 25 let controller3 : UITableViewController = UITableViewController() 26 controller3.title = "ビューその3" 27 controller3.view.backgroundColor = UIColor.green 28 controllerArray.append(controller3) 29 30 // PageMenuの設定 31 /* swift3版で頭の文字が小文字になった 32 let parameters: [CAPSPageMenuOption] = [ 33 .MenuItemSeparatorWidth(4.3), 34 .UseMenuLikeSegmentedControl(true), 35 .MenuItemSeparatorPercentageHeight(0.1) 36 ] 37 */ 38 // for swift3 version 39 let parameters: [CAPSPageMenuOption] = [ 40 .menuItemSeparatorWidth(4.3), 41 .useMenuLikeSegmentedControl(true), 42 .menuItemSeparatorPercentageHeight(0.1) 43 ] 44 45 // PageMenuのビューのサイズを設定 46 /* CGRectMakeはswift3でCGRectに変更 47 pageMenu = CAPSPageMenu(viewControllers: controllerArray, frame: CGRectMake(0.0, 20.0, self.view.frame.width, self.view.frame.height), pageMenuOptions: parameters) 48 */ 49 // for swift3 50 pageMenu = CAPSPageMenu(viewControllers: controllerArray, frame: CGRect(x:0.0, y:20.0, width:self.view.frame.width, height:self.view.frame.height), pageMenuOptions: parameters) 51 52 // PageMenuのビューを親のビューに追加 53 self.view.addSubview(pageMenu!.view) 54 // PageMenuのビューをToolbarの後ろへ移動 55 self.view.sendSubview(toBack: pageMenu!.view) 56 } 57 override func didReceiveMemoryWarning() { 58 super.didReceiveMemoryWarning() 59 // Dispose of any resources that can be recreated. 60 } 61}

投稿2016/11/22 19:39

編集2016/11/22 23:28
fromageblanc

総合スコア2724

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

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

0

ベストアンサー

swift3に対応したPageMenuをここからダウンロードできますよ。
https://github.com/orazz/PageMenu

インストールはCAPSPageMenu.swiftをプロジェクトに放り込むだけでOKです。
自分も使ってますが1ファイル追加で使えるというのが素晴らしいですね!(pods大嫌いなんでw)


余談ですがスマニューのタブやページロールのアニメーションは独自のものですね。
お手本にしてたりします。

投稿2016/11/21 00:19

fromageblanc

総合スコア2724

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

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

退会済みユーザー

退会済みユーザー

2016/11/22 18:04

回答ありがとうございます。 ご教授頂いた通り、頂いたURLからzipをダウンロードし、CAPSPageMenu.swiftをプロジェクト直下に入れ、URLの手順を実行しましたが 手順3でエラーが発生してしまいます。 ●1 var parameters: [CAPSPageMenuOption] = [ .MenuItemSeparatorWidth(4.3), .UseMenuLikeSegmentedControl(true), .MenuItemSeparatorPercentageHeight(0.1) ] の部分で 「Enum type 'CAPSPageMenuOption' has no case 'MenuItemSeparatorWidth' did you menuItemSeparratorWidth」 というエラー ●2 // Initialize page menu with controller array, frame, and optional parameters pageMenu = CAPSPageMenu(viewControllers: controllerArray, frame: CGRectMake(0.0, 0.0, self.view.frame.width, self.view.frame.height), pageMenuOptions: parameters) 'CGRectMake ' is unavaliable in Swift のエラー 計2点発生していて解決できない状況です。 エラー2のほうは回答いただく前から発生していたエラーとおなじになります
fromageblanc

2016/11/22 19:42

改修したソース載せました
退会済みユーザー

退会済みユーザー

2016/11/23 08:02

解決することができました!ありがとうございます! swift3で色々変わっているんですね。
guest

0

おそらくXcode8(Swift3)以上を使っているのだと思います。
エラー1、エラー2ともエラーの原因は古いSwift2用の文法で書いているからです。
「swift3 UIColor」
「swift3 CGRect」
とかで検索したら、どう修正したらいいか参考になる記事が見つかると思いますが、
Edit > Convert > To Current Swift Syntax...
を実行すると、手っ取り早く自動変換してくれます。

不明点1、不明点2については、エラー1、エラー2以外に
他にエラーが出ていなければ問題ないと思います。

投稿2016/11/20 22:31

TakeOne

総合スコア6299

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

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

退会済みユーザー

退会済みユーザー

2016/11/22 18:05

回答ありがとうございます。 swift3版のPageMenuを教えて頂いたので実行してみましたが再度エラーで落ちてしまいます。
TakeOne

2016/11/23 00:18 編集

> swift3版のPageMenuを教えて頂いたので実行してみましたが再度エラーで落ちてしまいます。 Edit > Convert > To Current Swift Syntax... を実施したんでしょうか? 報告されているどのエラーも、それを実施するだけで自動修正してくれるものばかりだと思いますけど。 私の回答を実施せずに他の人の回答を実施して、それがうまくいかないとこの回答のコメントに入れられても困ります。
退会済みユーザー

退会済みユーザー

2016/11/23 08:05

解決できました。ありがとうございます。 実施しましたが別のエラーが発生していてました。すいません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問