2013-05-19 14 views
7

我試圖給我的應用程序中的一個類中的一個標籤的陰影,但它根本不工作。什麼都沒有出現。我究竟做錯了什麼?試圖給UILabel一個陰影,但它不會顯示

// Set label properties 
titleLabel.font = [UIFont boldSystemFontOfSize:TITLE_FONT_SIZE]; 
titleLabel.adjustsFontSizeToFitWidth = NO; 
titleLabel.opaque = YES; 
titleLabel.backgroundColor = [UIColor clearColor]; 
titleLabel.textColor = titleLabelColor; 
titleLabel.shadowColor = [UIColor blackColor]; 
titleLabel.shadowOffset = CGSizeMake(10, 10); 

它只是白色,沒有陰影。

+0

我不知道這是否會幫助,但'opaque'應該是'NO'。另外,這是一個非常大的'shadowOffset'。 – fumoboy007

+0

'clipsToBounds'屬性怎麼樣? – holex

+0

你確定你的titleLabelColor不是backColor嗎?另外,我認爲10,10的偏移量太大了,你的影子可能會超出視線範圍。嘗試將它設置爲(任意)1和-1的組合0 –

回答

13

這一行剛加入添加titleLabel之前self.view

titleLabel.layer.masksToBounds = NO; 

GOOD LUCK !!

+0

這不適合我。我以編程方式創建按鈕,在將其添加到視圖之前,我將調用button.titleLabel?.layer.masksToBounds = false,但仍然會在底部裁剪我的陰影。 – endavid

0

只要確保您分配UILabel併爲標籤設置一個框架。並確保視圖添加到子視圖。像這樣:

titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 100, 30)]; 
    titleLabel.font = [UIFont boldSystemFontOfSize:14]; 
    titleLabel.adjustsFontSizeToFitWidth = NO; 
    titleLabel.opaque = YES; 
    titleLabel.text = @"My Label"; 
    titleLabel.backgroundColor = [UIColor clearColor]; 
    titleLabel.textColor = [UIColor whiteColor]; 
    titleLabel.shadowColor = [UIColor blackColor]; 
    titleLabel.shadowOffset = CGSizeMake(5, 5); 
    [myView addSubview:titleLabel]; 
    [titleLabel release]; 

陰影偏移的值10是相當大的。您可以根據您的要求調整值。

+0

確保您指定的標籤高度和陰影偏移不相同。如果是這樣,你永遠不會看到陰影,因爲它會超出界限。 – m4n1c

3

我希望您瞭解類別?

創建一個類別將是更好的選擇:

Command + N > Objective-C Category > Category = Animation & Category on = UIView 這將創建一個名稱UIView+Animation.hUIView+Animation.m

UIView+Animation.h文件

#import <UIKit/UIKit.h> 
#import <QuartzCore/QuartzCore.h> 

@interface UIView (Animation) 
- (void)setBackgroundShadow:(UIColor *)shadowColor CGSize:(CGSize)CGSize shadowOpacity:(float)shadowOpacity shadowRadius:(float)shadowRadius; 
@end 

UIView+Animation.m文件

#import "UIView+Animation.h" 

@implementation UIView (Animation) 
- (void)setBackgroundShadow:(UIColor *)shadowColor CGSize:(CGSize)CGSize shadowOpacity:(float)shadowOpacity shadowRadius:(float)shadowRadius 
{ 
    self.layer.shadowColor = shadowColor.CGColor; 
    self.layer.shadowOffset = CGSize; 
    self.layer.shadowOpacity = shadowOpacity; 
    self.layer.shadowRadius = shadowRadius; 
    self.clipsToBounds = NO; 
} 

進口UIView+Animation.h您的任何viewController,並調用它像這樣:

[self.titleLabel setBackgroundShadow:[UIColor grayColor] CGSize:CGSizeMake(0, 5) shadowOpacity:1 shadowRadius:5.0]; 
+0

我將第二個方法參數的名稱更改爲shadowOffset。一個小調整,但我發現代碼更具可讀性。另外它避免使用與iOS類型衝突的參數名稱。 –