web-dev-qa-db-ja.com

iOS7 / 8でUITabBarの高さを変更しますか?

Tweetbotのタブバーの高さと同様に、ストックUITabBarの高さを44pxに変更しようとしています。他にもいくつかのアプリがこれを行うのを見たことがあります。

しかし、私が高さを設定しようとすると、それはまだ同じままです

self.tabBar.frame.height = 40

タブバーの高さを変更することはできませんか?もしそうなら、良い代替手段は何ですか?ツールバーを使用していますか?

18
3254523

上記のSomeGuyの答えは私のために働きました。 Swift必要な人のための翻訳です。最も人気のあるアプリが使用していると思われる高さに近づけました。

class TabBar: UITabBar {

     override func sizeThatFits(size: CGSize) -> CGSize {
         var sizeThatFits = super.sizeThatFits(size)
         sizeThatFits.height = 38

         return sizeThatFits
     }
}
32
ClareHuxtable

誰もがこれは簡単にはできないと言っているようです

ストーリーボードで、UITabBarにカスタムサブクラス名を付け、次のようにサブクラスを実装します。

これは、タブバーを使用するすべてのビューに、特定の高さでなければならないことを伝えます。

@implementation MyTabBar

-(CGSize)sizeThatFits:(CGSize)size
{
    CGSize sizeThatFits = [super sizeThatFits:size];
    sizeThatFits.height = 100;

    return sizeThatFits;
}

@end

enter image description here

37
SomeGuy

Swift 3およびxcode 8の場合

extension UITabBar {
     override open func sizeThatFits(_ size: CGSize) -> CGSize {
     var sizeThatFits = super.sizeThatFits(size)
     sizeThatFits.height = 80 // adjust your size here
     return sizeThatFits
    }
 }
11

Swiftでは、UITabBarの拡張機能を使用することにより、上記で提案されたすべてのソリューションよりも簡単で、サブクラス化は必要ありません。

extension UITabBar {

    override public func sizeThatFits(size: CGSize) -> CGSize {
        super.sizeThatFits(size)
        var sizeThatFits = super.sizeThatFits(size)
        sizeThatFits.height = <Insert your height here>
        return sizeThatFits
    }
}
6
der_michael

あなたのUITabBarController

- (void)viewWillLayoutSubviews {
    CGRect tabFrame = self.tabBar.frame;
    tabFrame.size.height = 80;
    tabFrame.Origin.y = self.view.frame.size.height - 80;
    self.tabBar.frame = tabFrame; 
}
6
jose920405

自動レイアウトを有効にしている場合は、代わりにinstrinsicContentSizeをオーバーライドする必要があります

intelligentContentSizeおよびsizeThatFitsの適切な使用法:autolayoutを使用したUIViewサブクラス

class TabBar: UITabBar {
    override func intrinsicContentSize() -> CGSize {
        var intrinsicSize = super.frame.size

        intrinsicSize.height = 120
        return intrinsicSize
     }
}
5
jernkuan

開発者はtabBarを所有していませんが、フレームワークは所有しています。 tabBarが同じ高さを維持することを確認するために戦います。これを回避したい場合は、独自のツールバーを作成し、その高さにautlayout制約を追加して、好きな高さに留まらせることができます。

2
InkGolem

あなたがiOS 11を使用している場合は、以下が役立ちます

-(CGSize)sizeThatFits:(CGSize)size
{
    CGSize sizeThatFits = [super sizeThatFits:size];
    sizeThatFits.height = 60;

    if (@available(iOS 11.0, *)) {
        UIWindow *window = UIApplication.sharedApplication.keyWindow;
        CGFloat bottomPadding = window.safeAreaInsets.bottom;
        sizeThatFits.height += bottomPadding;
    }

    return sizeThatFits;
}

基本的に安全な領域をカバーする必要があります。それ以外の場合、iPhone Xのタブバーの高さは低く見えます。

1