0

私は、アプリケーションがRTLデバイスコンフィグレーションで実行されたときにUIBarButtonItemself.navigationItem.leftBarButtonItemを追加し、LTRデバイスコンフィグレーション時にはself.navigationItem.rightBarButtonItemを追加しました。 どちらの設定でも、UIBarButtonItemはデフルトボタンである戻るボタンをカバーします。私も、通常のシステムUIBarButtonItemで試してみました追加されたUIBaviButtonItemはUINavigationControllerのバックボタンをカバーします

let label = UILabel(frame: CGRect(x: 0, y: 0, width: CGFloat(150), height: CGFloat(20))) 
    label.backgroundColor = UIColor.clear 
    label.font = UIFont.systemFont(ofSize: 18.0) 
    label.shadowColor = UIColor(white: 0.0, alpha:0.5) 
    label.textAlignment = NSTextAlignment.center 
    label.textColor = UIColor(hexaValue: ConsColors.albums) 
    label.text = "Just text" 
    label.sizeToFit() 
    if UIApplication.shared.userInterfaceLayoutDirection == UIUserInterfaceLayoutDirection.rightToLeft{ 
     self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: label) 
    }else{ 
     self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: label) 
    } 

は、ここに私のコードです。 UINavigationcontrollerセマンティックコンテンツ属性force RightToLeftまたはLefttoRightが動作しないように設定しようとしました。

UINavigationBar.appearance().semanticContentAttribute = .forceRightToleft 

私はそれでスウィフト3、Xcodeの8.1とiPadエア2使いのOSのverionは9.3.2 は、誰もがそれを修正する方法を知っていているのか?

ありがとう、ありがとうございました。私の理解あたりとして

、あなたの要件は、デフォルトを持つことである:これは確かにカスタムボタンが

更新バックボタンの後に追加されるようになります

self.navigationItem.leftItemsSupplementBackButton = true 

の下に、このプロパティを設定し

答えて

1

バックボタンと反対側のカスタムボタンがあります。

self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: label) 
+0

ありがとう、私はそれを試みました、そして、私が達成したいと思っていたのは、一方の側に戻るボタンともう一方の側のボタン/ビューです。両方のボタンは同じ側にあります。それは私に起こる。 –

+0

私のデバイスがLTRを設定すると、LTRが機能し、戻るボタンは左側にあり、2番目のボタンは右側にあります。デバイスが設定されている場合でも、RTLの戻るボタンと第2のボタンは右側にあります。奇妙な行動。 –

+0

あなたが正しいifステートメントの必要はありません。しかし、私が達成したいと思っていなかったとしても、片側に戻るボタンと反対側に別のボタン/ビューがあり、同じ側の両方のボタンではありません。 –

0

が明示的に右のバーボタン項目を設定することにより、あなたは戻るボタンを株式に上書きされているように見えるとのことを交換して、以下の条件は、その

if UIApplication.shared.userInterfaceLayoutDirection == UIUserInterfaceLayoutDirection.rightToLeft{ 
     self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: label) 
    }else{ 
     self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: label) 
    } 

は必要ありません。幸いにも、複数の左のバーボタン項目を持つことができる組み込みの方法があり、思うよりも簡単です。 navigationItem.leftBarButtonItemを設定する代わりに、代わりにnavigationItem.leftBarButtonItemsを設定してください。ここに例があります:

let backButton = self.navigationItem.leftBarButtonItem 
let newButton = UIBarButtonItem(customView: label) 
self.navigationItem.leftBarButtonItems = [backButton, newButton] 
+0

ありがとう、私はすでにそれを試して、それはバックボタンをカバーしています、そして、私はあなたが探しているように、self.navigationItem.rightItemsSupplementBackButton :( –

関連する問題