Удалить волосок UIToolbar в iOS 7

Правило оператора XOR =>

0 ^ 0 = 0
1 ^ 1 = 0
0 ^ 1 = 1
1 ^ 0 = 1

Двоичное представление 4, 5 и 6:

4 = 1 0 0 
5 = 1 0 1
6 = 1 1 0

теперь выполняет операцию XOR на 5 и 4:

     5 ^ 4 => 1  0  1   (5)
              1  0  0   (4)
            ----------
              0  0  1   => 1

Аналогично,

5 ^ 5 => 1   0   1    (5)
         1   0   1    (5)
       ------------
         0   0   0   => (0)


5 ^ 6 => 1   0   1  (5)
         1   1   0  (6)
        -----------
         0   1   1  => 3
29
задан Jano 14 October 2013 в 13:37
поделиться

10 ответов

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

Надеюсь, что это поможет.

[РЕДАКТИРОВАТЬ]

Для нижней линии навигации навигационного бара решение здесь https://stackoverflow.com/a/18180330/2011578 также отлично работает.

83
ответ дан Community 14 October 2013 в 13:37
поделиться

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

[self.navigationController.navigationBar setShadowImage:[UIImage new]];
1
ответ дан Nishant 14 October 2013 в 13:37
поделиться

Это может быть легко решено на раскадровке:

Выберите представление, которое добавляется как UIBarButtonItem Container & amp; установить его "Clip Subviews" & amp; Запустите приложение.

enter image description here

2
ответ дан Aqib Mumtaz 14 October 2013 в 13:37
поделиться

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

        for (UIView *subView in [self.toolbar subviews]) {
            if ([subView isKindOfClass:[UIImageView class]]) {
                // Hide the hairline border
                subView.hidden = YES;
            }
        }
5
ответ дан tinrocket 14 October 2013 в 13:37
поделиться

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

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

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

5
ответ дан Thyraz 14 October 2013 в 13:37
поделиться

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

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

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

1
ответ дан dbart 14 October 2013 в 13:37
поделиться

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

self.clipsToBounds = true

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

4
ответ дан Dmitri Pavlutin 14 October 2013 в 13:37
поделиться

Не совсем то, что вы хотите, но этот ответ наверняка кому-то поможет.

Если вы хотите изменить цвет нижней границы (тени) 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 imageBoTB] для_узла_позиции]: Местоположение: имя_узла: @ "МестоПоложение:" 118]

1
ответ дан iCanCode 14 October 2013 в 13:37
поделиться

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

используйте:

TOOLBAR.subviews
      .filter { [110] is UIImageView }
      .forEach { [110].hidden = true }

или:

for case let imageView is UIImageView in TOOLBAR.subviews {
    imageView.hidden = true 
}
0
ответ дан ober 14 October 2013 в 13:37
поделиться

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

[[UIToolbar appearance] setClipsToBounds:YES];

0
ответ дан guptron 14 October 2013 в 13:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: