2013-05-19 26 views
7

Tôi đang cố gắng đưa nhãn ở một trong các lớp trong ứng dụng của tôi một bóng đổ, nhưng nó không hoạt động chút nào. Không có gì xuất hiện. Tôi đang làm gì sai?Cố gắng cung cấp cho UILabel một bóng, nhưng nó sẽ không hiển thị

// 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); 

Màu trắng, không bóng.

+0

Tôi không biết nếu điều này sẽ giúp, nhưng 'opaque' nên được' NO'. Ngoài ra, đó là một 'shadowOffset' khá lớn. – fumoboy007

+0

Điều gì về thuộc tính 'clipsToBounds'? – holex

+0

bạn có chắc chắn titleLabelColor của bạn không phải là backColor? Ngoài ra, tôi nghĩ rằng bù đắp 10,10 là quá lớn, và bóng tối của bạn có thể đi ra khỏi viewbounds. Hãy thử thiết lập nó như là (bất kỳ) combo 1 và -1 –

Trả lời

13

Just Thêm dòng này để trước khi thêm titleLabel để self.view

titleLabel.layer.masksToBounds = NO; 

Good Luck !!

+0

Điều này không hiệu quả đối với tôi. Tôi đang tạo một nút lập trình và trước khi thêm nó vào chế độ xem, tôi đang gọi button.titleLabel? .layer.masksToBounds = false, nhưng bóng của tôi vẫn bị cắt ở phía dưới. – endavid

0

Chỉ cần đảm bảo rằng bạn phân bổ UILabel và cũng đặt khung cho nhãn. Và cũng đảm bảo rằng chế độ xem được thêm vào chế độ xem phụ. Một cái gì đó như thế này:

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]; 

giá trị 10 cho chênh lệch bóng là khá lớn. Bạn có thể tinh chỉnh các giá trị dựa trên yêu cầu của bạn.

+0

Đảm bảo rằng chiều cao của nhãn và độ che bóng bạn đang chỉ định không giống nhau. Nếu vậy, bạn sẽ không bao giờ thấy bóng tối bởi vì, nó sẽ đi ra ngoài giới hạn. – m4n1c

3

tôi hy vọng bạn biết các danh mục?

Tạo một thể loại sẽ là lựa chọn tốt hơn:

Command + N > Objective-C Category > Category = Animation & Category on = UIView này sẽ tạo ra 2 file với tên UIView+Animation.hUIView+Animation.m

UIView+Animation.h tập tin

#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 tập tin

#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; 
} 
.210

nhập UIView+Animation.h trong bất kỳ viewController của bạn và gọi nó là như thế này:

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

Tôi đã thay đổi tên của tham số phương thức thứ hai thành shadowOffset. Một tinh chỉnh nhỏ, nhưng tôi thấy mã dễ đọc hơn theo cách đó. Ngoài ra, nó tránh sử dụng tên tham số xung đột với loại iOS. –

Các vấn đề liên quan