2012-11-08 58 views
2

這一個:在UIKit中創建透明線的最快方式是什麼?

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(x, y, width, 1)]; 
view.backgroundColor = [UIColor whiteColor]; 
view.alpha = 0.1; 

或這一個:

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(x, y, width, 1)]; 
view.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.1]; 

或是否有任何第三替代?使用UIImageView和圖像?使用CoreGraphics進行自定義繪圖?什麼應該是最快的?

+2

我:現有視圖的方法不知道最快的,但你可能想在你的測試中包含NSBezierPath,因爲這是一些蘋果示例代碼用於簡單線條繪製。 –

+1

您是否嘗試過使用CALayer?這是一個UIView並使用較少內存的較輕對象。我懷疑它會比UIView繪製得更快。 –

+0

你只是想畫一條線,還是需要對這條線進行很多操作? – Beav

回答

1

最快的方法是創建一個CALayer。如果需要,使用這將允許您輕鬆更改其顏色/不透明度。

CALayer *line = [CALayer new]; 
line.frame = CGRectMake(x, y, width, 1.0); 
line.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0.1].CGColor; 
[someView.layer addSublayer:line]; 

如果你想畫一條線右轉到一個現有的視圖,並把它與沒有改變,你可以將下面的代碼添加到的drawRect呆在那裏:

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetStrokeColorWithColor(context, [[UIColor whiteColor] colorWithAlphaComponent:0.1].CGColor); 
CGContextSetLineWidth(context, 1.0); 
CGContextMoveToPoint(context, x, y); 
CGContextAddLineToPoint(context, x + width, y); 
CGContextStrokePath(context); 
相關問題