Основная проблема управления альфа-значением панели инструментов заключается в том, что оно применяется ко всей панели инструментов и ее кнопкам. Если вы установите backgroundColor
с некоторым альфа-значением <1, результирующий цвет будет объединен с <code>barStyle (UIBarStyleDefault или UIBarStyleBlack), что приведет к более непрозрачному цвету, чем исходный backgroundColor
. Если вы установите barTintColor
, он переопределит все остальные настройки, включая любое установленное альфа-значение, что приведет к совершенно непрозрачному цвету.
Единственный способ уменьшить альфа на панели инструментов без влияния на кнопки - это установить фоновое изображение с помощью setBackgroundImage:forToolbarPosition:barMetrics:
. Вы можете создать изображение размером 1 на 1 пиксель с желаемым цветом и альфа-каналом:
+ (UIImage *)onePixelImageWithColor:(UIColor *)color {
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, 1, 1, 8, 0, colorSpace, (CGBitmapInfo)kCGImageAlphaPremultipliedFirst);
CGContextSetFillColorWithColor(context, color.CGColor);
CGContextFillRect(context, CGRectMake(0, 0, 1, 1));
CGImageRef imgRef = CGBitmapContextCreateImage(context);
UIImage *image = [UIImage imageWithCGImage:imgRef];
CGImageRelease(imgRef);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
return image;
}
[ Swift версия ]
Затем установите фоновое изображение:
[toolbar setBackgroundImage:[self onePixelImageWithColor:[[UIColor blackColor] colorWithAlphaComponent:0.7]]
forToolbarPosition:UIBarPositionBottom
barMetrics:UIBarMetricsDefault];