2016-03-24 22 views
1

にビューを追加します。私は背が高くUINavigationBar作成する<a href="https://i.stack.imgur.com/js9oD.png" rel="nofollow noreferrer">this code</a>を追っXIBからカスタムUINavigationBarサブクラス

var heightIncrease: CGFloat = 38.0 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
    self.transform = CGAffineTransformMakeTranslation(0, -heightIncrease) 
} 

override init(frame: CGRect) { 
    super.init(frame: frame) 
} 

override func sizeThatFits(size: CGSize) -> CGSize { 
    var newSize = super.sizeThatFits(size) 
    newSize.height += heightIncrease 
    return newSize 
} 

override func layoutSubviews() { 
    super.layoutSubviews() 
    for view in self.subviews { 
     if (NSStringFromClass(view.classForCoder).containsString("UINavigationBarBackground")) { 
      view.frame.origin.y = self.bounds.origin.y + heightIncrease - statusBarHeight 
      view.frame.size.height = self.bounds.size.height + statusBarHeight 
     } 
    } 
} 

var statusBarHeight: CGFloat { 
    return UIApplication.sharedApplication().statusBarFrame.size.height 
} 

enter image description here

を今、私はその底部にXIBからビューを追加したいです。私が最初に考えたのは、このような何かをすることでした。

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 

    self.transform = CGAffineTransformMakeTranslation(0, -heightIncrease) 

    if let accessoryView = NSBundle.mainBundle() 
     .loadNibNamed("NavBarAccessoryView", owner: self, options: nil) 
     .first as? NavBarAccessoryView { 
      accessoryView.frame.size.width = self.bounds.size.width 
      accessoryView.frame.origin.y = 75 
      self.addSubview(accessoryView) 
    } 
} 

それだけで絵であるかのように、それはだ、それはOKに見えますが、私はセグメント化されたコントロールでセグメントを選択することはできません。

enter image description here

これを行うより良い方法はありますか?もし愚かな質問や、私の試みが意味をなさない、私はこれで新しく、これまでのところ私はインターフェイスビルダーからの意見やものだけを扱ったことは申し訳ありません。

答えて

0

私は拡張子を記述します。ok、まあ

var coverTableViewCell=YQEventCoverTableViewCell.instanceFromNibByClassName() as! YQEventCoverTableViewCell 
+0

が、私の主な問題は、ナビゲーションバーに追加されていますので、私はこのようなインスタンスを取得することができます

extension UIView { static func instanceFromNibByClassName() -> UIView { let nibName = stringFromClass(self as AnyClass) return NSBundle.mainBundle().loadNibNamed(nibName, owner: nil, options: nil).first! as! UIView } 

}

を。 – dbmrq

関連する問題