2

私のアプリが横向きの場合、余分なパディングトップがあります。プログラムでナビゲーションバーを作成するときの私のコードは次のとおりです。ランドスケープ モードのときにパディング トップを削除するためのアドバイスはありますか?

    let navigationBar = UINavigationBar(frame: CGRectMake(0, 0, self.view.frame.size.width, 44)

    navigationBar.backgroundColor = UIColor.redColor()
    navigationBar.delegate = self;

    let navigationItem = UINavigationItem()
    navigationItem.title = "Title"

    let btnLeft = UIButton(frame: CGRectMake(0, 0, 44, 44))
    btnLeft.setImage(UIImage(named: “myImage.png"), forState: .Normal)

    let leftButton =  UIBarButtonItem()
    leftButton.customView = btnLeft

    navigationItem.leftBarButtonItem = leftButton

    navigationBar.items = [navigationItem]

    self.view.addSubview(navigationBar)

シミュレーターからのスナップショット (横向き)

ここに画像の説明を入力

シミュレーターからのスナップショット (縦)

ここに画像の説明を入力

4

1 に答える 1

0

この設定で簡単に解決する必要があります(viewDidLoad例では):

self.edgesForExtendedLayout = UIRectEdge.None

代替方法: willShowViewControllerと呼ばれるUINavigationControllerデリゲート メソッド (クラスでナビゲーション デリゲートを設定している場合) にも配置できます。UINavigationControllerDelegate

func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
    viewController.edgesForExtendedLayout = UIRectEdge.None
}

一緒に仕事をする場合は、次のUITableViewことも行うことができます。

 self.automaticallyAdjustsScrollViewInsets = false

属性インスペクターを直接編集することもできます。

ここに画像の説明を入力

これらのアプローチのいずれかが機能しない場合、デフォルトでUINavigationBar は、向きに基づいて異なる高さになります。たとえば、ナビゲーション バーは、縦向きで 44 ポイント、横向きで 32 ポイントです。回避策は次のとおりです。

// Create an IBOutlet of your navigationBar height constraint
@IBOutlet weak var navBarHeight: NSLayoutConstraint

override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
        if self.view.bounds.size.height > self.view.bounds.size.width {
            self.navBarHeight.constant = 44
        } else {
            self.navBarHeight.constant = 32
        }
}
于 2016-05-27T15:37:10.523 に答える