2011-01-31 3 views
12

のテキストを非表示にします。私はそれを達成するために次のコードを使用しました。ただし、グラデーションの色はラベルに表示されますが、テキストは表示されません。 UILabelにサブレイヤを挿入は、私はラベルの背景としてグラデーションを追加したいラベル

lblPatientDetail.text=PatientsDetails; 

lblPatientDetail.textColor=[UIColor blackColor]; 

CAGradientLayer *gradient = [CAGradientLayer layer]; 
gradient.frame = lblPatientDetail.bounds; 
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor whiteColor] CGColor],(id)[[UIColor colorWithRed:255/255.0 green:239/255.0 blue:215/255.0 alpha:1.0] CGColor],nil]; 

[lblPatientDetail.layer addSublayer:gradient]; 

lblPatientDetail.backgroundColor=[UIColor clearColor]; 

答えて

13

はテキストを隠し、あなたが望む結果を得るための最善の方法は、UIViewのにラベルやグラデーションレイヤーを追加することです助けてください。

UIView *gradientLabelView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 30)]; 

CAGradientLayer *gradient = [CAGradientLayer layer]; 
gradient.frame = gradientLabelView.bounds; 
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor whiteColor] CGColor],(id)[[UIColor colorWithRed:255/255.0 green:239/255.0 blue:215/255.0 alpha:1.0] CGColor],nil]; 

[gradientLabelView.layer addSublayer:gradient]; 

lblPatientDetail.frame = gradientLabelView.bounds; 
lblPatientDetail.backgroundColor = [UIColor clearColor]; 
[gradientLabelView addSubview:lblPatientDetail]; 

[self addSubview:gradientLabelView]; 
+1

を追加することで、この問題を解決

:(...あなたはback..Iでこの層を追加する方法を教えてくださいすることができますが、すでにこれを試してみました私はインデックスを変更しましたが、無駄にしました:)助けてください、事前に感謝:) – Fatema

+0

私はあなたがUILabelsでこれを行うことはできないかもしれないかもしれません。グラデーションを使用してUIViewを作成してから、そのラベルをサブビューとして追加することができます。 –

+2

ありがとうJames私はあなたの2番目のオプションを試しました:) UIViewのグラデーションを追加し、サブビューとしてラベルを追加しました:-) – Fatema

-4

私はあなたが上記のコードでは、アルファ値を調整することにより、グラデーションの色を作成することができると思います。

gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor whiteColor] CGColor],(id)[[UIColor colorWithRed:255/255.0 green:239/255.0 blue:215/255.0 alpha:0.1] CGColor],nil]; 

こうすることで勾配効果を得ることができました。

2

UIViewの内部UILabelと示唆した答えが動作します。どうやらUILabelsは、背景にグラデーションの色の背景を与えた後にテキストを表示することはできません。理由はわかりません....

しかし、解決策の完全なコードをheres ....これは誰かを助けてくれるでしょう:)

UIView *EnvironmentalsLabelView = [[UIView alloc] initWithFrame:CGRectMake(0, 300, 320, 20)]; 
CAGradientLayer *gradient = [CAGradientLayer layer]; 
gradient.frame = EnvironmentalsLabelView.bounds; 
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor darkGrayColor]CGColor], (id)[[UIColor blackColor]CGColor], nil]; 
[EnvironmentalsLabelView.layer insertSublayer:gradient atIndex:0]; 
[scroller addSubview:EnvironmentalsLabelView]; 

UILabel *EnviornmentalsLabelText = [[UILabel alloc] initWithFrame:EnvironmentalsLabelView.bounds]; 
[EnviornmentalsLabelText setFont:[UIFont fontWithName:@"Arial-BoldMT" size:12.0f]]; 
EnviornmentalsLabelText.textAlignment = NSTextAlignmentCenter; 
EnviornmentalsLabelText.backgroundColor = [UIColor clearColor]; 
EnviornmentalsLabelText.text = @"Environmental Benefits"; 
[EnvironmentalsLabelView addSubview:EnviornmentalsLabelText]; 

コーディングハッピー!!!!

+0

我々は、余分なビューを使用せずに同じことを行うことができます –

1

つ以上の追加の答えを修正するためだと思います。 あなたの場所のために使用autolayoutsある場合は、カスタムは、あなたがこの問題を得ることができます表示 - UILabelとサブレイヤ - - 勾配層http://prntscr.com/5tj7bx

だからあなたのビューには、異なるサイズ、その後サブビューを持っています。私はya私はそのは、テキストの上に追加取得することを知っている一つの方法

class wResultView: UIView { 
var label = UILabel() 
var gradientLayer = CAGradientLayer() 

override func layoutSubviews() { 
    gradientLayer.frame = self.bounds 
    label.frame = self.bounds 
} 
...... 
関連する問題