Изменение начальных и конечных полей для UINavigationBar - PullRequest
0 голосов
/ 04 мая 2018

Есть ли способ изменить начальные и конечные поля для UINavigationBar, контролируемого UINavigationController? Я использую пользовательский интерфейс, и он поможет оставить больше места слева и справа для кнопок «Назад» и «Готово».

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Существует множество вопросов по этому поводу в стеке потока. На iOS <11 работает добавление отрицательной кнопки-проставки. </p>

В iOS 11, быстрое [_UINavigationBarContentView directionalLayoutMargins], возвращающее нулевое значение, удаляет любые завершающие отступы вокруг левых / правых элементов:

NSDirectionalEdgeInsets zeroMargins(id self, SEL _cmd) {
  return NSDirectionalEdgeInsetsMake(0, 0, 0, 0);
}

- (void) doIt {
    Class cl = objc_getClass("_UINavigationBarContentView");
    if (cl != nil) {
        method_setImplementation(class_getInstanceMethod(cl, @selector(directionalLayoutMargins)), (IMP)zeroMargins);
    }
}
0 голосов
/ 05 мая 2018

Вы можете изменить навигационную рамку на вашем контроллере навигации

class NavigationController: UINavigationController {

    override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    let space = 30
    self.navigationBar.frame = CGRect(x: CGFloat(space), y: 0, width: self.navigationBar.frame.size.width-CGFloat(space*2), height: self.navigationBar.frame.size.height)
    }
}
...