Я создаю приложение iOS 7, в котором я хотел бы иметь панель поиска прямо под панелью навигации, и я хотел, чтобы они оба выглядели как единое целое. Поэтому мне нужно окрасить их в один и тот же цвет (уже сделано) и удалить эту линию в нижней части панели навигации и в верхней части панели поиска. Как я могу этого добиться?
Как убрать линию UINavigationBar и UISearchBar
Ответы (5)
Официально это возможно только путем установки shadowImage
панели навигации на пустое изображение. Однако при более внимательном рассмотрении документации сказано:
Чтобы отображалось пользовательское теневое изображение, пользовательское фоновое изображение также должно быть установлено с помощью метода setBackgroundImage:forBarMetrics:. Если используется фоновое изображение по умолчанию, то теневое изображение по умолчанию будет использоваться независимо от значения этого свойства.
Используя пользовательское фоновое изображение, вы потеряете полупрозрачность размытого фона.
Если вы чувствуете себя предприимчивым, «линия волос» — это UIImageView, который является подвидом панели навигации. Вы можете найти его и сделать скрытым. Это то, что Apple делает, например, в своем родном приложении календаря. Не забудьте показать его, когда текущий вид исчезнет.
shadowImage
. Я думаю, что в моем случае я скрыл все просмотры изображений.
- person Leo Natan; 27.09.2013
[UIImage new]
и даже nil
, но ни один из них не работал.
- person Guilherme; 27.09.2013
[[UINavigationBar appearance] setShadowImage:[UIImage new]];
- person Leo Natan; 27.09.2013
application:didFinishLaunchingWithOptions:
, но тонкая линия осталась.
- person Guilherme; 27.09.2013
application:didFinishLaunchingWithOptions:
.
- person Leo Natan; 27.09.2013
initWithCoder:
(вызывается при использовании пера) и посмотрите, какой из них вызывается первым. В нашем приложении это сработало, но мне не понравилась опция пользовательского фонового изображения.
- person Leo Natan; 27.09.2013
используйте следующий код в AppDelegate (didFinishLaunchingWithOptions)
Быстрый :
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .any, barMetrics: .default)
UINavigationBar.appearance().shadowImage = UIImage()
Цель с:
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init]
forBarPosition:UIBarPositionAny
barMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
Свифт 3:
self.navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
Один из способов избавиться от тонкой линии вверху и внизу UISearchBar — это заменить фоновое изображение на растягивающееся, у которого нет такой тонкой границы. Просто создайте квадратный png с цветом по вашему выбору, затем:
[searchBar setBackgroundImage:[[UIImage imageNamed:@"SearchBarImage"] resizableImageWithCapInsets:UIEdgeInsetsMake( 10, 10, 10, 10)]];
Поскольку фон сплошной, вы можете использовать практически любые значения для вставок.
Для тех, кому интересно, как реализовать «авантюрный» подход @Leo Natan, я добавил пример кода в мой ответ на аналогичный вопрос.