2011-11-08 26 views
6

Tôi có một lớp con được xếp chồng từ một ngòi, và tôi không thể lấy được bóng để vẽ xung quanh nó. Tôi đang cố gắng để có được một cái bóng xuất hiện xung quanh toàn bộ xem trong một thời gian khá bây giờ. Tôi đã chọn để đặt nó trong lớp con của riêng nó để đơn giản hóa hoạt hình sau này. Dưới đây là các mã:Bóng không xuất hiện cho UIView sử dụng CALayer

-(void)awakeFromNib 
{ 
    self.clipsToBounds = NO; 

    // set up the shadow layer 
    CALayer *shadow = [CALayer layer]; 
    shadow.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.bounds.size.width, self.bounds.size.height); 
    shadow.shadowColor = [UIColor blueColor].CGColor; 
    shadow.shadowRadius = 15.0; 
    shadow.opacity = 1.0; 
    [self.layer addSublayer:shadow]; 
    // I set this property so I have access to it later to more easily animate it. 
    self.shadowLayer = shadow; 
} 

Khi tôi NSLog các shadowLayer bất động sản, các tọa độ và khung là chính xác. Nó phù hợp với quan điểm của nó.

Tôi cũng đặt bán kính màu và góc đường viền trên self.layer và nó xuất hiện chính xác. Nếu tôi đặt bóng trên self.layer, nó sẽ xuất hiện nhưng nó bao gồm tất cả các bản xem trước của phụ huynh của tôi UIView.

Bất kỳ trợ giúp nào được đánh giá cao.

Trả lời

3

Giả sử bạn đã nhập QuartzCore. Tôi nghĩ bạn cần đặt & tạo đường viền cho UIView. Cách sử dụng này [self roundedLayerWithShadow:yourView.layer radius:5.0f];

- (void)roundedLayerWithShadow:(CALayer *)viewLayer 
         radius:(float)r 
{ 
    [viewLayer setMasksToBounds:YES]; 
    [viewLayer setCornerRadius:r];   
    [viewLayer setBorderColor:[RGB(180, 180, 180) CGColor]]; 
    [viewLayer setBorderWidth:1.0f]; 

    [viewLayer setShadowColor:[RGB(0, 0, 0) CGColor]]; 
    [viewLayer setShadowOffset:CGSizeMake(0, 0)]; 
    [viewLayer setShadowOpacity:1]; 
    [viewLayer setShadowRadius:2.0]; 
    return; 
} 
+0

Nếu tôi có hai bóng thì sao? –

-2

Ngoài borderRadius, lớp shadow của bạn trông rất nhiều trong suốt. Do đó, nó sẽ không thả bất kỳ bóng nào trên shadow.superlayer.

+0

Bóng tối màu xanh dương và mờ đục. Không có lý do gì nó không được nhìn thấy, theo như tôi có thể nói. – bryanjclark

0

Tôi gặp khó khăn với cùng, và hóa ra bạn cần đặt shadowOpacity thành 1.0. Trong mã của bạn, bạn vô tình sử dụng opacity thay vì shadowOpacity. Đó là cùng một vấn đề tôi đã có.

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