Подтвердить что ты не робот

Удалите линию UIToolbar в iOS 7

В iOS 7 Apple изменила UIToolbar, чтобы отобразить линию роста 1px. В некоторых случаях это визуально отвлекает, и, похоже, для его удаления нет никакого общедоступного API.

Настройка shadowImage не работает.

Я ищу способ удаления линии волос относительно чистым способом и сохраняю обычное размытие фона.

4b9b3361

Ответ 1

Если вы установили youBar.clipsToBounds = YES, линия волос исчезнет.

Надеюсь на эту помощь.

[EDIT]

Для нижней линии навигации navigationBar решение здесь fooobar.com/questions/181832/... также отлично работает.

Ответ 2

Граница линии волос - это подъярус UIImageView на панели инструментов, вы можете скрыть его следующим образом:

        for (UIView *subView in [self.toolbar subviews]) {
            if ([subView isKindOfClass:[UIImageView class]]) {
                // Hide the hairline border
                subView.hidden = YES;
            }
        }

Ответ 3

В строке это shadowImage. Его можно просто удалить, применив пустой UIImage. В соответствии с документацией вы также должны установить пользовательское фоновое изображение:

- (void)viewDidLoad {
  [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc]init] forBarMetrics:UIBarMetricsDefault];
  self.navigationController.navigationBar.shadowImage = [[UIImage alloc ]init];
}

Знайте: прозрачность не будет работать, если вы установите собственные изображения в случае, если вам это нужно.

Ответ 4

При использовании раскадровки

self.clipsToBounds = true

можно настроить для панели инструментов в атрибутах Runtime. Это скроет линию волос. Проверено в iOS 7 и 8.

Ответ 5

Его можно легко разрешить на раскадровке:

Выберите "Просмотр", который добавлен как контейнер UIBarButtonItem, и установите его "Подвижные клипы" и "Запустить приложение".

enter image description here

Ответ 6

это решение сработало для меня... попробовал это для iOS 7

[self.navigationController.navigationBar setShadowImage:[UIImage new]];

Ответ 7

Не то, что вы хотите, но, безусловно, этот ответ поможет кому-то.

Если вы хотите изменить нижний (теневой) цвет UINavigationBar или UIToolbar, а не скрывать его, вы должны установить фоновое изображение и теневое изображение на панель.

Для изменения нижней границы (тени) UINavigationBar

[self.navigationController.navigationBar setBackgroundImage: [UIImage imageNamed: @ "yourImageName" ] forBarMetrics: UIBarMetricsDefault];      [self.navigationController.navigationBar setShadowImage: [UIImage imageNamed: @ "yourImageName" ]];

Для изменения нижней границы (тени) UIToolbar

[yourToolBar setBackgroundImage: [UIImage imageNamed: @ "yourImageName" ] forToolbarPosition: UIBarPositionBottom barMetrics: UIBarMetricsDefault];

[yourToolBar setShadowImage: [UIImage imageNamed: @ "yourImageName" ] forToolbarPosition: UIBarPositionBottom];

Ответ 8

В то время как несколько хакерских, подклассифицируя UITabBar и переопределяя метод - (void)addSubview:, мы можем исключить добавление разделителя линий в иерархию представлений:

- (void)addSubview:(UIView *)view {
    if ([view isKindOfClass:[UIImageView class]] && view.bounds.size.height < 2.0f) {
        return;
    }
    [super addSubview:view]; 
}

Таким образом мы получим как размытую панель вкладок, так и удалим разделитель линий. Он также гарантирует, что UITabBar не будет обрезать представления до границ, что важно для таких эффектов, как большие центральные кнопки или другие компоненты пользовательского интерфейса.

Ответ 9

Я не мог заставить это работать с помощью раскадровки в моем случае. В конце концов я использовал прокси-сервер внешнего вида для устранения тени на всех своих инструментах:

[[UIToolbar appearance] setClipsToBounds:YES];

Ответ 10

Если вам нужно спрятать волосы и показать теневые клипы, то это не поможет

использование:

TOOLBAR.subviews
      .filter { $0 is UIImageView }
      .forEach { $0.hidden = true }

или

for case let imageView is UIImageView in TOOLBAR.subviews {
    imageView.hidden = true 
}