После неудачной попытки настроить фильтр живого изображения на представлении «Металл» для повышения производительности, мне было любопытно, оказал ли какой-то эффект мой пользовательский интерфейс.У меня есть расширение на UIButton, которое добавляет к ним размытие и тень.Если я закомментирую содержимое функций и запустлю его, графический процессор будет работать вдвое интенсивнее, а воздействие батареи будет выше, чем в навигаторе отладки.
extension UIButton
{
func addCircularBlur(radius:CGFloat)
{
let blur = UIVisualEffectView(effect: UIBlurEffect(style: .regular))
blur.frame = self.bounds
blur.layer.cornerRadius = radius * self.bounds.size.width
blur.clipsToBounds = true
blur.isUserInteractionEnabled = false
blur.autoresizingMask = [.flexibleRightMargin, .flexibleLeftMargin, .flexibleBottomMargin, .flexibleTopMargin, .flexibleWidth, .flexibleHeight]
self.insertSubview(blur, at: 0)
if let imageView = self.imageView{
self.bringSubview(toFront: imageView)
}
}
func addShadow()
{
self.imageView?.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 1.0).cgColor
self.imageView?.layer.shadowOffset = CGSize(width:0.0, height:0.0)
self.imageView?.layer.shadowOpacity = 0.1
self.imageView?.layer.shadowRadius = 2.0
self.imageView?.layer.masksToBounds = false
self.imageView?.layer.cornerRadius = 4.0
}
}
Вот как я вызываю эти функции.В этом примере используется кнопка из Interface Builder, но ее можно добавить программно к кнопке:
@IBOutlet weak var takePhotoBtn: UIButton!
// inside viewDidLoad:
takePhotoBtn.addCircularBlur(radius:0.5)
takePhotoBtn.addShadow()
Что из этого заставляет мое устройство работать лучше, когда размытие и тени включены?