2014-06-23 77 views
0

我想为UITextView应用渐变效果。这是我的代码:渐变效果UITextView

textView = [[UITextView alloc]initWithFrame:CGRectMake(50,220,self.view.frame.size.width-100,self.view.frame.size.height-300)]; 

    underTextView = [[UIView alloc]initWithFrame:CGRectMake(50,220,self.view.frame.size.width-100,self.view.frame.size.height-300)]; 

CGFloat layerWidth = 8.f; 
CAGradientLayer *gl1 = [CAGradientLayer layer]; 
id col1 = (id)[[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0]CGColor]; 
id col2 = (id)[[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0]CGColor]; 
gl1.colors = @[col2, col1, col1, col2]; 
if (self.textView.contentOffset.y < 5) 
    gl1.locations = @[@0.0, @0.0, @0.85, @1.0]; 
if (self.textView.contentOffset.y >=5 && self.textView.contentOffset.y < 20) { 
    CGFloat number = (self.textView.contentOffset.y - 5) * 0.01; 
    gl1.locations = @[@0.0, [NSNumber numberWithFloat:number], @0.85, @1.0]; 
} 
if (self.textView.contentOffset.y >= 20 && self.textView.contentOffset.y < self.textView.contentSize.height - self.textView.frame.size.height - 20) 
    gl1.locations = @[@0.0, @0.15, @0.85, @1.0]; 
if (self.textView.contentOffset.y >= (self.textView.contentSize.height - self.textView.frame.size.height - 20) && self.textView.contentOffset.y < (self.textView.contentSize.height - self.textView.frame.size.height - 5)) { 
    CGFloat number = 1 - (self.textView.contentSize.height - self.textView.contentOffset.y - self.textView.frame.size.height - 5) * 0.01; 
    gl1.locations = @[@0.0, @0.15, [NSNumber numberWithFloat:number], @1.0]; 
} 
if (self.textView.contentOffset.y >= self.textView.contentSize.height - self.textView.frame.size.height - 5) 
    gl1.locations = @[@0.0, @0.15, @1.0, @1.0]; 
gl1.frame = CGRectMake(0, 0, self.underTextView.frame.size.width - layerWidth, self.underTextView.frame.size.height); 
CAGradientLayer *gl2 = [CAGradientLayer layer]; 
gl2.colors = @[col1, col1]; 
gl2.locations = @[@0.0, @1.0]; 
gl2.frame = CGRectMake(self.underTextView.frame.size.width - layerWidth, 0, layerWidth, self.underTextView.frame.size.height); 
CAGradientLayer *gl = [CAGradientLayer layer]; 
[gl addSublayer:gl1]; 
[gl addSublayer:gl2]; 
self.underTextView.layer.mask = gl; 


[self.underTextView addSubview:textView]; 

[self.view addSubview:underTextView]; 

但是渐变效果没有被应用。有人可以提出错误的地方吗?任何想法plsss。

谢谢,

回答

0

但为什么不添加在Photoshop中创建的渐变背景图像? 以编程方式创建渐变会影响性能,所以我认为最好将UIImageView作为背景添加到textview中,并将textView.backgroundColor设置为[UIColor clearColor];

+0

我对textview有滚动效果,所以我想在textview和textview的底部应用渐变效果,同时滚动textview – asifa

+0

啊,现在我明白了:) – arturdev

0

你可以简单地更换

self.underTextView.layer.mask = gl; 

[[underTextView layer] addSublayer:gl]; 

它可能会奏效。