2016-11-24 17 views
0

私は前に検索しようとしましたが、私の質問に対する解決策が見つかりませんでした。 古いTabBarのオーバーライドを行っているTabBarの高さを変更したいと思います。 UIViewControllerのサブクラスを作成して、スクラッチやソトクラッセラのUITabBarから始めればいいと思いますが、私はこの方法で試したかったのですが、どうしてうまくいかないのか理解できません。オーバーライドタブバーの高さを変更する

import UIKit 

class NewTabBarController: UITabBarController { 

let newTabBar : UITabBar = { 

    let tmpView = UITabBar.init() 
    tmpView.backgroundColor = UIColor.black 
    tmpView.accessibilityLabel = "Nuova Tab Bar" 
    tmpView.translatesAutoresizingMaskIntoConstraints = false 

    return tmpView 

}() 

override var tabBar: UITabBar{ 


    return self.newTabBar 

} 

override func viewDidLoad() { 
    super.viewDidLoad() 

      self.view.addSubview(newTabBar) 
    self.newTabBar.heightAnchor.constraint(equalToConstant: 100).isActive = true 
    self.newTabBar.widthAnchor.constraint(equalTo: self.view.widthAnchor).isActive = true 
    self.newTabBar.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true 
    self.newTabBar.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true 

    // Do any additional setup after loading the view, typically from a nib. 
} 

さまざまな解決策を試しました。 フレームを使用すると、制約はありますが、これらのどれも機能しませんでした。それは表示されません

var newTabBar : UITabBar = { 

    let tmpView = UITabBar.init() 
    tmpView.backgroundColor = UIColor.black 
    tmpView.accessibilityLabel = "New Bar" 
    return tmpView 

}() 

override var tabBar: UITabBar{ 


    return self.newTabBar 

} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.newTabBar.frame = CGRect.init(x: 0, y: self.view.frame.height - 110, width: self.view.frame.width, height: 110) 
    // Do any additional setup after loading the view, typically from a nib. 
} 

: は制約で、私が代わりにフレームを使用して、このエラー

*** Terminating app due to uncaught exception 
'NSInternalInconsistencyException', reason: 'Cannot modify constraints for 
UITabBar managed by a controller' 

を得ます。 newTabBarをサブビューとして追加すると、それが表示されますが、最初のものは消えません。 「?それを行うために、なぜ私はオーバーライドゲッターを使用することはできません」:

答えて

0

はい、それはあまりにも私のために動作しますが、私は聞いてるのよ、これがSwift 3

let CustomTabBarHeight = 100 // Set your custom tabBar height here 

override func viewWillLayoutSubviews() { 
    var customTabFrame = self.tabBarController?.tabBar.frame 
    customTabFrame?.size.height = CGFloat(CustomTabBarHeight) 
    customTabFrame?.origin.y = self.view.frame.size.height - CGFloat(CustomTabBarHeight) 
    self.tabBarController?.tabBar.frame = customTabFrame! 
    tabBarController?.tabBar.barTintColor = .black 
    tabBarController?.tabBar.tintColor = .white 
} 
+0

にcode.testedお試しください。私の意見では、スーパーのプロパティをオーバーライドしているので正しいはずです。 – ndPPPhz

関連する問題