2016-12-13 4 views
0

私は自分のtitleViewを私のnavigationItemに集中させようとしています。centering title NavigationItem内に表示

extension UINavigationItem{ 
func makeImg(){ 


    let container = UIView(frame: CGRect(x: 0,y: 0,width: 200,height: 40)) 
    let logo = UIImage(named: "Rookie") 
    let imageView = UIImageView(frame: CGRect(x: 66.75, y: 7.25, width: 66.5, height: 25.5)) 
    imageView.image = logo 
    imageView.layer.masksToBounds = true 
    imageView.clipsToBounds = true 


    container.addSubview(imageView) 
    self.titleView = container 


} 

} 

私はそれがで私のスーパービューとは何かを持っていると思う:これは私のコードはextensionnavigationItemへと

Before After

です: 私のアプリをローカライズした後、私はこの動作を見てナビゲーション項目。 したがって、画面境界を参照する必要があります。何か案は?

+0

すると、コンテナ内のImageViewのをラップ何らかの具体的な理由はありますか? titleViewとして直接imageViewを設定することができます。 – Ryan

答えて

1

この設定は、titleViewとして設定されたビューが非常に広い場合に発生します。 titleViewとして追加されたビューは、幅が使用可能なスペースよりも広い場合にのみサイズが変更されます。この場合、左のバーボタンアイテムと右の間のスペースを埋めるようにサイズが変更されます。

この場合、containerオブジェクトは、200ポイント幅として設定されています。これは、両方のアイテムで使用可能なスペースよりも広いです。

containerの幅を画像ビュー(つまり66.5ポイント)と一致するように設定すると、中央になるはずです。 :)

(それとも、他のビューを追加する予定がない場合は逆に、あなたがtitleViewとして直接画像ビューを設定することができます)

+0

は直接作成しようとしました。魅力的に働いた。おかげで多くの – JVS

+1

心配はありません!お役に立てて嬉しいです! :) – TiM

関連する問題