Как установить область Цвет и как скрыть значок в uisearchbar в swift 4 [duplicate]

Как было сказано выше, «пропущено 55 кадров!» означает, что в вашем приложении используется некоторая тяжелая обработка.

Для моего случая в моем приложении нет тяжелого процесса. Я дважды и тройной проверил все и удалил этот процесс, я думаю, был немного тяжелым.

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

Итак, моё предложение - если ни один из приведенных выше ответов не поможет, вы также можете проверить размер файлов ресурсов.

2
задан SwiftMatt 15 January 2016 в 11:57
поделиться

3 ответа

Фоновое изображение scopeBar можно установить как сплошное цветное изображение.

Сначала вам нужно создать UIImage из цвета . Для этого вы можете создать функцию или расширение в UIImage , например, следующий код:

Swift 3

import UIKit

extension UIImage {
    class func imageWithColor(color: UIColor) -> UIImage {
        let rect: CGRect = CGRect(x: 0, y: 0, width: 1, height: 1)
        UIGraphicsBeginImageContextWithOptions(CGSize(width: 1, height: 1), false, 0)
        color.setFill()
        UIRectFill(rect)
        let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        return image
    }
}

После этого вы можете просто установить backgroundImage на панели видимости:

Swift 3

// Set the scopeBar's background color:
searchBar.scopeBarBackgroundImage = UIImage.imageWithColor(color: UIColor.blue)
2
ответ дан Community 20 August 2018 в 11:45
поделиться
  • 1
    Спасибо, он работает нормально и исправил мою проблему – Bradley 21 March 2018 в 18:08
  • 2
    Это сработало для меня! Благодаря :) – Nii Mantse 10 April 2018 в 18:14

У меня есть образец проблемы, и я решил это, как показано ниже.

CGSize imageSize = CGSizeMake(64, 64);
UIColor *fillColor = [UIColor colorWithRed:228/255.0 green:228/255.0 blue:228/255.0 alpha:1.0];
UIGraphicsBeginImageContextWithOptions(imageSize, YES, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
[fillColor setFill];
CGContextFillRect(context, CGRectMake(0, 0, imageSize.width, imageSize.height));
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

self.searchController.searchBar.scopeBarBackgroundImage = image;
0
ответ дан dobiho 20 August 2018 в 11:45
поделиться
- (void)changeScopeBarColor {
NSMutableArray<UIView*> *views = [NSMutableArray new];
NSArray<UIView *> *subviews = [_searchBar subviews];
[views addObjectsFromArray:subviews];
for (;;) {
    if (views.count == 0) {
        break;
    }

    UIView *v = [views firstObject];
    [views removeObject:v];

    if ([[[v class] description] isEqualToString:@"_UISearchBarScopeBarBackground"]) {
        v.backgroundColor = [UIColor whiteColor];
        break;
    }
    if (v.subviews.count > 0)
        [views addObjectsFromArray:v.subviews];
    }
}
0
ответ дан user3547480 20 August 2018 в 11:45
поделиться
Другие вопросы по тегам:

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