2011-02-14 20 views

cevap

12

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.

+1

self.bottomToolbar: Burada

Swift 3 versiyonudur.barStyle = UIBarStyleBlack; self.bottomToolbar.translucent = YES; self.bottomToolbar.backgroundColor = [UIColor clearColor]; –

+0

Bu cevap http://stackoverflow.com/a/5149484/1250436 daha iyidir. – ohcibi

12
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ı.

+1

Bu daha iyi bir yanıt – respectTheCode

+0

Ayrıca bunu, InterfaceBuilder/Storyboard (Stil "Translucent Black") olarak da ayarlayabilirsiniz. – ohcibi

1

Ü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); 
} 
1

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.

1

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]; 
+0

Bu, iOS 9 için doğru yanıttır. – user8030

0

, 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 
}