我有一個UIToolbar的alpha設置爲.6。看起來不錯 - 但它留下的按鈕與0.6的alpha,這是好的,但不是真的需要。有沒有辦法獨立設置UIBarButtonItem的alpha?我將如何讓這些看起來像白色而不是略顯灰色?UIToolBar與縮小阿爾法,要UIBarButtonItem具有阿爾法1
回答
當您在視圖上設置Alpha時,所有子視圖都會使用相同的Alpha值進行合成。你可以做什麼而不是在視圖本身上設置阿爾法,就是使用具有阿爾法值的色調或背景色。這可以產生類似的效果,而不會導致所有子視圖繼承透明度。
toolbar.tintColor = [[UIColor blackColor] colorWithAlphaComponent:0.6];
如果不工作,你真正需要做的視圖本身透明,你將不得不返工您的視圖層次,這樣的不透明觀點並不子視圖。由於條形按鈕項目不能用作標準視圖,因此它可能不會在工具欄的情況下可行。
self.bottomToolbar.barStyle = UIBarStyleBlack;
self.bottomToolbar.translucent = YES;
self.bottomToolbar.backgroundColor = [UIColor clearColor];
查看不透明度設置爲1,這些設置爲我做了。
這是更好的答案 – respectTheCode 2011-03-23 16:15:55
上面沒有我在的iOS 4.3工作,但這並:
子類UIToolbar,提供了一個方法:
- (void)drawRect:(CGRect)rect
{
[[UIColor colorWithWhite:0 alpha:0.6f] set]; // or clearColor etc
CGContextFillRect(UIGraphicsGetCurrentContext(), rect);
}
我發現barStyle does'n實際上很重要。無論是設置背景顏色清除。
self.toolbar.barStyle = UIBarStyleDefault;
self.toolbar.tintColor = [UIColor colorWithWhite:0.0 alpha:0.5];
self.toolbar.translucent = YES;
那些行爲我完成了工作(ios4.3)。 據我所知,將工具欄transfluent屬性設置爲YES,您已將其設置爲清晰(透明)的背景。當然,這取決於你設定的色調。如果它不包含alpha組件,則該欄將是不透明的。
控制工具欄的alpha值的主要問題是它適用於整個工具欄及其按鈕。如果將某個backgroundColor
設置爲某個阿爾法值< 1,則生成的顏色與barStyle
(UIBarStyleDefault或UIBarStyleBlack)相結合,導致比原始backgroundColor
更不透明的顏色。如果您設置了barTintColor
,它似乎會覆蓋所有其他設置,包括您設置的任何Alpha值,從而導致完全不透明的顏色。
我已經能夠做到的唯一方法是在不影響其按鈕的情況下減少工具欄的alpha值,是setting its background image via setBackgroundImage:forToolbarPosition:barMetrics:
。可以通過1px的圖像具有所需顏色和alpha創建1px的:
+ (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;
}
然後設置背景圖片:
[toolbar setBackgroundImage:[self onePixelImageWithColor:[[UIColor blackColor] colorWithAlphaComponent:0.7]]
forToolbarPosition:UIBarPositionBottom
barMetrics:UIBarMetricsDefault];
許多小時評估上述各方法之後,我發現只有Ryan H.提供的方法是可行的。這是因爲這是您可以操縱Alpha值而其他人無法操作的方法。
這裏是斯威夫特3版本:
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
}
- 1. 將UIView與阿爾法1 UIView與阿爾法0.5頂部0
- 2. 從UIColor UIImage與阿爾法
- 3. 的Xcode:阿爾法
- 4. Unicode和:阿爾法:
- 5. 搖籃3.0阿爾法2引發異常,而阿爾法1工作正常
- 6. Hadoop的2.X線:如何「阿爾法」是「阿爾法」
- 7. Matplotlib Contourf當阿爾法<1
- 8. 阿爾法佈局讓所有的孩子都有阿爾法?Android
- 9. 德爾福:圖像具有阿爾法混合功能
- 10. OpenGL ES 1.1 - 阿爾法面具
- 11. WindowManager.LayoutParams阿爾法問題
- 12. Libgdx decalbatch顆粒阿爾法
- 13. Android:drawableLeft設置阿爾法
- 14. 阿爾法分量填充
- 15. 更改圖片阿爾法
- 16. JLabel的阿爾法值
- 17. 阿爾法合成問題
- 18. SWT draw2d阿爾法混合
- 19. 反轉阿爾法值java
- 20. JsARtoolkit阿爾法視頻
- 21. Matplotlib bar3d變量阿爾法
- 22. 一定阿爾法範圍
- 23. 無法使用阿爾託
- 24. UISlider阿爾法問題
- 25. 的wxWidgets - 阿爾法混合
- 26. JavaFX 8 Canvas快照與阿爾法
- 27. 使用AngularFire與角2.0阿爾法
- 28. pyglet - 加載/ blitting圖像與阿爾法
- 29. getimagedata與原始圖像阿爾法?
- 30. 核心動畫不與「阿爾法」值
self.bottomToolbar。barStyle = UIBarStyleBlack; self.bottomToolbar.translucent = YES; self.bottomToolbar.backgroundColor = [UIColor clearColor]; – 2011-03-01 01:13:49
這個答案http://stackoverflow.com/a/5149484/1250436更好。 – ohcibi 2013-01-24 12:25:06