2014-04-18 12 views
27

Tôi phải thả một bóng ở bên phải và dưới cùng của uiview.Im làm điều này trong giao diện builder.But tôi thấy bóng đổ xuống đầu của nó.Tried differnt sizes.but cann Không hiểu.Thả một bóng vào bên phải và dưới cùng của uiview

layer.masksToBound=No 
layer.shadowOpacity=0.15 
layer.shadowRadius=2 
layer.shadowOffSet={10,-10} //Values being set in Interfacebuilder. 

Vẫn còn điều này giảm xuống ở đầu. Tôi nên làm gì để có được ở cuối chế độ xem.

+0

cho thời gian chạy @ walle84 là corrent câu trả lời . – Joker

Trả lời

90

Hãy thử đoạn mã sau, nó có thể giúp bạn

myView.layer.shadowColor = [UIColor purpleColor].CGColor; 
    myView.layer.shadowOffset = CGSizeMake(5, 5); 
    myView.layer.shadowOpacity = 1; 
    myView.layer.shadowRadius = 1.0; 
    myView.layer.maskToBounds = NO; 

Tôi thử mã này và nó làm việc và đầu ra là:

enter image description here

+2

Bạn có thể cho tôi biết cách thêm bóng chỉ trong bttom của chế độ xem không. –

+4

Thay vì 'myView.layer.shadowOffset = CGSizeMake (5, 5);' do 'myView.layer.shadowOffset = CGSizeMake (0, 5);' –

+0

inimageview tôi không thể thêm bóng này. tôi đã viết mã như khi bạn viết. –

0

Tôi nghĩ rằng độ lệch bóng của bạn không chính xác. Nó phải là {10, 10} như:

[layer setShadowOffset:CGSizeMake(10 , 10) ]; 
+0

Tôi đã thử nó ngay cả. Nhưng nó giảm xuống đầu chỉ – Honey

+0

Sử dụng mã để tạo bóng tối. kiểm tra [liên kết] này (http://nachbaur.com/blog/fun-shadow-effects-using-custom-calayer-shadowpaths) –

+0

@GauravSingh tôi đã sử dụng tính năng này để vẽ bóng cho ô xem bảng nhưng sau khi cuộn lên, hãy chuyển lên đầu . – user3306145

6

Xin chào Tôi đã sử dụng mã dưới đây, nó sẽ cung cấp cho bạn bóng mà bạn muốn.

UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:_viewShadow.bounds]; 
_viewShadow.layer.masksToBounds = NO; 
_viewShadow.layer.shadowColor = [UIColor blackColor].CGColor; 
_viewShadow.layer.shadowOffset = CGSizeMake(10.0f, 5.0f); /*Change value of X n Y as per your need of shadow to appear to like right bottom or left bottom or so on*/ 
_viewShadow.layer.shadowOpacity = 0.5f; 
_viewShadow.layer.shadowPath = shadowPath.CGPath; 

Ngoài ra các mặt nạToBounds là vô hiệu hóa việc cắt bớt các lớp con mở rộng ra ngoài giới hạn của khung nhìn. Nếu bạn đặt nó YES thì bạn sẽ không nhìn thấy bóng khi nó clip sublayer nơi khác trong NO nó cho phép mức độ lớp.

+1

Cảm ơn ghi chú của bạn về 'masksToBounds', tôi đã bỏ lỡ ghi chú này. –

1

Trong Swift 3, CGSizeMake không còn tồn tại. Nó đã được đổi thành CGSize(width: 20, height: 10). Vì vậy, các shadowOffset thể được thiết lập như thế này trong Swift 3:

myView.layer.shadowOffset = CGSize(width: 20, height: 10) 
0

tôi phát hiện ra rằng những giá trị cho một kết quả tốt đẹp:

myView.layer.shadowColor = UIColor.black.cgColor 
myView.layer.shadowOpacity = 0.25 
myView.layer.shadowRadius = 3 
myView.layer.shadowOffset = CGSize(width: 1, height: 1) // shadow on the bottom right 

enter image description here

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