🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Swift

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

Q&A

解決済

1回答

978閲覧

「XLPagerTabStrip」コードのみでタブバーの表示位置(y座標)を任意で設定したい

kaduf

総合スコア1

Swift

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

0グッド

0クリップ

投稿2021/03/08 06:12

お世話になってます。
XLPagerTabStripを使用してタブバーの実装を行っているんですが、
初期位置がx:0,y:0なのでヘッダーとかぶってしまうのでy座標を任意で設定したいです。
ストーリーボード は使用せずにコードのみで実装したいのですが、参考文献が見当たらず質問させていただきました。
setting.styleでも設定できないのでご存知の方いたらご教授いただけると幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

たまたま先日回答向けに書き溜めたのがあるので、そのまま貼っておきます。
ButtonBarPagerTabStripViewControllerbuttonBarViewcontainerView をいうプロパティがあるので、それをそのまま利用します(下記のコードだと違うプロパティ名にしたいので冗長に書いていますが、直接指定しても結果に変わりはないはずです)。

ただ、公式は「StoryBoard の使用」を強く推奨していますので、このような利用は想定外であることはご理解ください。

Swift

1import UIKit 2import XLPagerTabStrip 3 4class ViewController: ButtonBarPagerTabStripViewController, UICollectionViewDelegateFlowLayout { 5 lazy var collectionView: ButtonBarView = { 6 let cv = buttonBarView 7 return cv! 8 }() 9 10 lazy var scrollView: UIScrollView = { 11 let sv = containerView 12 return sv! 13 }() 14 15 16 override func viewDidLoad() { 17 // MARK: インセットに関する設定は、 super.viewDidLoad を呼ぶ前に行う 18 19 // ボタンとボタンの間の間隔 20 settings.style.buttonBarMinimumLineSpacing = 0 21 //左右のインセット 22 settings.style.buttonBarLeftContentInset = 0 23 settings.style.buttonBarRightContentInset = 0 24 25 super.viewDidLoad() 26 // Do any additional setup after loading the view. 27 view.addSubview(collectionView) 28 view.addSubview(scrollView) 29 30 } 31 32 override func viewWillLayoutSubviews() { 33 super.viewWillLayoutSubviews() 34 35 // Safe Area のトップインセット 36 let topInset = view.safeAreaInsets.top 37 38 let width = view.frame.size.width 39 let height = view.frame.size.height 40 41 // Tab Bar 42 collectionView.frame = CGRect(x: 0, y: topInset, width: width, height: 64) 43 44 // View Controller 表示部 45 scrollView.frame = CGRect(x: 0, y: topInset + 64, width: width, height: height - 64) 46 47 // Auto Layout を使う場合 48 // collectionView.translatesAutoresizingMaskIntoConstraints = false 49 // collectionView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true 50 // collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true 51 // collectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true 52 // collectionView.heightAnchor.constraint(equalToConstant: 64).isActive = true 53 // 54 // scrollView.translatesAutoresizingMaskIntoConstraints = false 55 // scrollView.topAnchor.constraint(equalTo: collectionView.bottomAnchor).isActive = true 56 // scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true 57 // scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true 58 // scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true 59 } 60 61 override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] { 62 let vc1 = SubViewController() 63 vc1.view.backgroundColor = .red 64 vc1.itemInfo = "First" 65 66 let vc2 = SubViewController() 67 vc2.view.backgroundColor = .yellow 68 vc2.itemInfo = "Second" 69 70 return [vc1, vc2] 71 } 72} 73 74class SubViewController: UIViewController, IndicatorInfoProvider { // 「IndicatorInfoProvider」を追加 75 // タブのタイトルを設定 76 var itemInfo: IndicatorInfo! 77 78 override func viewDidLoad() { 79 super.viewDidLoad() 80 } 81 82 // protocol 83 func indicatorInfo(for pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo { 84 return itemInfo 85 } 86}

投稿2021/03/08 06:36

編集2021/03/08 06:36
TsukubaDepot

総合スコア5086

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

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

kaduf

2021/03/08 07:19

TsukurubaDepotさん 迅速な回答ありがとうございます、大変助かりました。 >公式は「StoryBoard の使用」を強く推奨しています なるほど、こちらは漏れておりましたありがとうございますmm ストーリーボードだとgitでコンフリクトが起きやすい事からコードのみで実装を考えていた次第です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問