Как было сказано выше, «пропущено 55 кадров!» означает, что в вашем приложении используется некоторая тяжелая обработка.
Для моего случая в моем приложении нет тяжелого процесса. Я дважды и тройной проверил все и удалил этот процесс, я думаю, был немного тяжелым.
Я удалил фрагменты, действия, библиотеки, пока не осталось только скелет. Но проблема все же не исчезла. Я решил проверить ресурсы и нашел несколько значков, и фон, который я использую, довольно большой, поскольку я забыл проверить размер этих ресурсов.
Итак, моё предложение - если ни один из приведенных выше ответов не поможет, вы также можете проверить размер файлов ресурсов.
Фоновое изображение 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)
У меня есть образец проблемы, и я решил это, как показано ниже.
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;
- (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];
}
}