【Swift5】UITabBarのサイズを変更する方法【Objective-C】

2020年8月26日

UITabBarのサイズを変更する方法をご紹介します。

UITabBarは基本的にTabBarの高さ49px + セーフエリア(下)の高さ34pxの合計83pxになっています。 ここでは「TabBarの高さ49px」のサイズを変更し、タブバーのサイズを変更します。

UITabBarのサイズを変更する方法

Swift5

import UIKit

class CustomTabBar: UITabBar {

    override func sizeThatFits(_ size: CGSize) -> CGSize {
        var sizeThatFits = super.sizeThatFits(size)
        sizeThatFits.height = 150
        return sizeThatFits;
    }

}

Objective-C

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface CustomTabBar : UITabBar

@end

NS_ASSUME_NONNULL_END
#import "CustomTabBar.h"

@implementation CustomTabBar

- (CGSize)sizeThatFits:(CGSize)size {
    CGSize sizeThatFits = [super sizeThatFits:size];
    sizeThatFits.height = 150;
    return sizeThatFits;
}

@end

UITabBarを継承したCustomTabBarという独自クラスを作成して上記のようにsizeThatFitsメソッドをオーバーライドします。

StoryboardでUITabBarControllerやUITabBarを実装している場合は、TabBarを選択して右側にあるCustom Classの設定を変更してください。

以上でUITabBarのサイズを変更することができます。

カスタムクラスを作らず、UITabBar本体のsizeThatFitsをオーバーライドする方法

Swift5

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
    }
}

extension UITabBar {
    override open func sizeThatFits(_ size: CGSize) -> CGSize {
        var sizeThatFits = super.sizeThatFits(size)
        sizeThatFits.height = 150
        return sizeThatFits;
    }
}

extensionを使用してsizeThatFitsメソッドをオーバーライドします

Objective-C

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface UITabBar (Helper)

@end

NS_ASSUME_NONNULL_END
#import "UITabBar+Helper.h"

@implementation UITabBar (Helper)

- (CGSize)sizeThatFits:(CGSize)size {
    CGSize sizeThatFits = [super sizeThatFits:size];
    sizeThatFits.height = 150;
    return sizeThatFits;
}

@end

Helper(UITabBar+Helper.h、UITabBar+Helper.m)を作成してsizeThatFitsメソッドをオーバーライドします

関連記事