2017-12-05 9 views
1

アイテムの幅を取得するためにUITabBarの幅を取得したいと考えています。このため 、私が使用している:私が手に幅が間違っているようだがストーリーボードを使用したUITabBarの幅

let itemWidth = tabBar.frame.size.width/tabBar.items.count 

...

tabBar.frame.size.widthがプレビューさに応じてストーリーボードに私のタブバーの幅を与える...

言い換えれば

私のストーリーボードプレビューがに設定されている場合、iPadのプロ12.9"tabBar.frame.size.widthは、コードがiPhone 5S上で実行されている場合でも1024.0を返します。

私はここで何が欠けていますか?

答えて

1

UITabBarのサイズは、layoutSubviews()機能が実行された後でのみ、正確なになります。サブクラスUITabBarControllerを開き、タブバーのサイズにviewDidLayoutSubviews()でアクセスします。

class CustomTabBarController: UITabBarController { 
    override func viewDidLayoutSubviews() { 
     super.viewDidLayoutSubviews() 

     print(tabBar.frame.width) //this will print the actual width 
    } 
} 
+1

恐ろしい!ありがとう! 'layoutSubviews'の前に印刷された値がストーリーボードに表示された値である理由を知っていますか? (説明があれば....) – Azartys

+0

これは簡単です:プログラマチックでないビューの初期サイズは**常に** Interface Builderで設定されたものです。 – the4kman

関連する問題