olmasını istiyorum. Alfa değerine .6 sahip bir UIToolbar'ım var. Harika görünüyor - ama düğmeleri de bir alfa ile çıkar. Bir UIBarButtonItem alfa bağımsız olarak ayarlamak için bir yolu var mı? Bunları biraz grileşmiş yerine beyaz görünmesini nasıl sağlayabilirim?İndirgenmiş alfa ile UIToolBar, UIBarButtonItem alfabesinin alfa 1
cevap
Alfa'yı bir görünümde ayarladığınızda, tüm alt görünümler aynı alfa değeriyle birleştirilir. Alfa'yı görünümde ayarlamak yerine yapabilecekleriniz, bir alfa değeri olan bir renk tonu veya arka plan rengi kullanmaktır. Bu, tüm alt görünümlerin saydamlığı devralmasına neden olmadan benzer etkiler yaratabilir. Bu işe yaramazsa ve aslında görünümü kendisi şeffaf hale gerekiyorsa
toolbar.tintColor = [[UIColor blackColor] colorWithAlphaComponent:0.6];
, sen opak görünümleri subviews olmadığını böylece görünüm hiyerarşisi yeniden işleme gerekecektir. Bar düğmesi öğeleri standart görünüm olarak mevcut olmadığından, muhtemelen araç çubuğu durumunda çalışamaz.
self.bottomToolbar.barStyle = UIBarStyleBlack;
self.bottomToolbar.translucent = YES;
self.bottomToolbar.backgroundColor = [UIColor clearColor];
Opaklık değerini 1 olarak ayarlayın ve bu ayarlar benim için yaptı.
Bu daha iyi bir yanıt – respectTheCode
Ayrıca bunu, InterfaceBuilder/Storyboard (Stil "Translucent Black") olarak da ayarlayabilirsiniz. – ohcibi
Üstü iOS 4.3 benim için işe yaramadı, ama bu yaptı:
Alt Sınıf UIToolbar bir yöntem sağlar:
- (void)drawRect:(CGRect)rect
{
[[UIColor colorWithWhite:0 alpha:0.6f] set]; // or clearColor etc
CGContextFillRect(UIGraphicsGetCurrentContext(), rect);
}
Ben barStyle aslında önemli does'n olduğunu tespit ettik. Temizlemek için arka plan rengi ayarlanmaz.
self.toolbar.barStyle = UIBarStyleDefault;
self.toolbar.tintColor = [UIColor colorWithWhite:0.0 alpha:0.5];
self.toolbar.translucent = YES;
olanlar çizgiler bana (ios4.3) için bir iş çıkarmış. Anlayabildiğim gibi, açık (şeffaf) arka plana sahip olacak şekilde ayarlama araç çubuklarını YES'e ayarlayın. Tabii ki belirlediğiniz renk tonuna bağlı. Alfa bileşeni içermiyorsa, çubuk opak olacaktır.
araç çubuğunun alfa değerini kontrol da ana konu tüm araç çubuğu ve düğmelerinin için de geçerlidir olmasıdır. Bazı alfa değeri < 1 olan backgroundColor
değerini ayarlarsanız, elde edilen renk, orijinal backgroundColor
'dan daha opak bir renge neden olan barStyle
(UIBarStyleDefault veya UIBarStyleBlack) ile birleştirilir. barTintColor
'u ayarlarsanız, belirlediğiniz alfa değeri de dahil olmak üzere tüm diğer ayarları geçersiz kılar ve sonuç olarak tamamen opak bir renk elde edilir.
Düğümlerini etkilemeden araç çubuğunun alfa değerini azaltabilmemin tek yolu setting its background image via setBackgroundImage:forToolbarPosition:barMetrics:
. Eğer arzu edilen renk ve alfa 1 piksel görüntü ile 1 piksellik oluşturabilir: [Swift version]
sonra arka plan resmi ayarlamak
+ (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;
}
: yukarıdaki her bir değerlendirme yöntemleri bir çok saat sonra,
[toolbar setBackgroundImage:[self onePixelImageWithColor:[[UIColor blackColor] colorWithAlphaComponent:0.7]]
forToolbarPosition:UIBarPositionBottom
barMetrics:UIBarMetricsDefault];
Bu, iOS 9 için doğru yanıttır. – user8030
, Sadece Ryan H. tarafından sağlanan yöntemin uygun olduğunu buldum. Bunun nedeni, diğerleri yapamazken alfa değerini değiştirebileceğiniz yöntem olmasıdır.
override func viewDidLoad() {
super.viewDidLoad()
let bgImageColor = UIColor.black.withAlphaComponent(0.6) //you can adjust the alpha value here
self.upperToolBar.setBackgroundImage(onePixelImageWithColor(color: bgImageColor),
forToolbarPosition: .any,
barMetrics: UIBarMetrics.default)
}
func onePixelImageWithColor(color : UIColor) -> UIImage {
let colorSpace = CGColorSpaceCreateDeviceRGB()
let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue)
var context = CGContext(data: nil, width: 1, height: 1, bitsPerComponent: 8, bytesPerRow: 0, space: colorSpace, bitmapInfo: bitmapInfo.rawValue)
context!.setFillColor(color.cgColor)
context!.fill(CGRect(x:0,y: 0, width: 1, height:1))
let image = UIImage(cgImage: context!.makeImage()!)
return image
}
self.bottomToolbar: Burada
Swift 3 versiyonudur.barStyle = UIBarStyleBlack; self.bottomToolbar.translucent = YES; self.bottomToolbar.backgroundColor = [UIColor clearColor]; –Bu cevap http://stackoverflow.com/a/5149484/1250436 daha iyidir. – ohcibi