BESUP
  • HOME
  • PRODUCT
  • CONTENT
    • Swift一覧 >
      • UIView(ビュー)
      • UILabel(ラベル)
      • UIButton(ボタン)
      • UITextField(テキストフィールド )
      • UITextFieldの編集・キーボードリターンキーを押した時
      • UITextView(テキストビュー)
      • UITextViewの編集・キーボードリターンキーを押した時
      • UITabBar(タブバー)
      • UINavigationBar(ナビゲーションバー)
      • UITableView(テーブルビュー)
      • 横スライドアニメーション
      • 手描き
  • お問い合わせ

B E S U P

ー はじまりを、より良い機能を ー

UINavigationBar(ナビゲーションバー)

【ナビゲーションバーをコードで作る】

Storyboardを使わずに、コードでナビゲーションバー を作成します。
ナビゲーションバー の高さを変更するため、カスタムクラスを作っています。
【NavigationBar.swift】
import UIKit

class NavigationBar: UINavigationBar {

    let barHeight: CGFloat = 60
     
    override func sizeThatFits(_ size: CGSize) -> CGSize {
            
        return CGSize(width: UIScreen.main.bounds.width, height: barHeight)
    }
        
    override func layoutSubviews() {
        super.layoutSubviews()
            
        if #available(iOS 11.0, *) {
            for subview in subviews {
                let stringFromClass = NSStringFromClass(subview.classForCoder)
                
                if stringFromClass.contains("UIBarBackground") {
                    subview.frame = CGRect(x: 0, y: 0, width: frame.width, height: barHeight)
                        
                    subview.sizeToFit()
                        
                }
                
                if stringFromClass.contains("UINavigationBarContentView") {
                    let centerY = (barHeight - subview.frame.height) / 2.0
                    subview.frame = CGRect(x: 0, y: centerY, width: frame.width, height: subview.frame.height)
                        
                    subview.sizeToFit()
                }
            }
        }
    }
}
【ViewController.swift】
import UIKit

class ViewController: UIViewController {

    let navBar = NavigationBar()
    
let navBarheight: CGFloat = 60

    //ナビゲーションバー のタイトル用
    var navlabel = UILabel()

    ​override func viewDidLoad() { 
        super.viewDidLoad()


        //ナビゲーションバーの配置・サイズ
        navBar.frame = CGRect(x: 0, y: 0, width: screenW, height: navBarheight)
        
        //ナビゲーションバーアイテムを作成
        let navItem = UINavigationItem()
        //ナビゲーションバータイトル設定
        navItem.titleView = navlabel
        navlabel.text = "タイトル"

        //ナビゲーションバータイトル色・フォントサイズ
        navlabel.textColor = UIColor.white
        navlabel.font = UIFont(name: "HiraMinProN-W3", size: 26)
                
        //ナビゲーションバー左側への設置
        let LeftnavButton = UIBarButtonItem()
        let LeftnavButtonImg:UIImage = UIImage(named: "イメージファイル名1")!
        LeftnavButton.image = LeftnavButtonImg

        //ナビゲーションバー左側をタップした際
        LeftnavButton.action = #selector(ViewController.leftnavButtontap)

        
        //ナビゲーションバー右側に設置
        let RightnavButton = UIBarButtonItem()
        let RightnavButtonImg:UIImage = UIImage(named: "イメージファイル名2")!
        RightnavButton.image = RightnavButtonImg

        //ナビゲーションバー右側をタップした際
        RightnavButton.action = #selector(ViewController.rightnavButtontap)

        //ナビゲーションバーアイテムにボタンを設置する(左側)
        navItem.leftBarButtonItem = LeftnavButton
        //ナビゲーションバーアイテムにボタンを設置する(右側)
        navItem.rightBarButtonItem = RightnavButton

        //ナビゲーションバーアイテムの色を変える
        navBar.tintColor = UIColor.white
        
        //ナビゲーションバーにアイテムを格納する。
        navBar.pushItem(navItem, animated:true)

        //ナビゲーションバーの色を変える
        navBar.barTintColor = UIColor(red: CGFloat(redColor), green: CGFloat(greenColor), blue: CGFloat(blueColor), alpha: 1.0)
        
        // ナビゲーションバーの透明化
        // 半透明の指定(デフォルト値)
        self.navBar.isTranslucent = true
        // 空の背景画像設定
        self.navBar.setBackgroundImage(UIImage(), for: .default)
        // ナビゲーションバーの影画像(境界線の画像)を空に設定
        self.navBar.shadowImage = UIImage()

        //ナビゲーションバーを追加する。
        self.view.addSubview(navBar)
    }

    ​//ナビゲーションバー左側をタップした際のアクション
    ​@objc func leftnavButtontap(_ sender: UIBarButtonItem) {​
    ​    ​print("左側を押したよ")
    }


    ​//ナビゲーションバー右側をタップした際のアクション
    @objc func rightnavButtontap(_ sender: UIBarButtonItem) {​
    ​    ​print("右側を押したよ")        
    }


}
コンテンツ一覧へ

ホーム

プライバシーポリシー

お問い合わせ

Copyright © 2020
  • HOME
  • PRODUCT
  • CONTENT
    • Swift一覧 >
      • UIView(ビュー)
      • UILabel(ラベル)
      • UIButton(ボタン)
      • UITextField(テキストフィールド )
      • UITextFieldの編集・キーボードリターンキーを押した時
      • UITextView(テキストビュー)
      • UITextViewの編集・キーボードリターンキーを押した時
      • UITabBar(タブバー)
      • UINavigationBar(ナビゲーションバー)
      • UITableView(テーブルビュー)
      • 横スライドアニメーション
      • 手描き
  • お問い合わせ