2012-05-11 30 views
7

Tôi đang viết thư viện giao diện người dùng, trong đó tôi muốn có thể có alpha của UIViews như nếu UIViewGroupOpacity info.plist ket được đặt. Xem các liên kết sau đây:Độ mờ nhóm UIView trong chế độ xem đơn thừa kế

Make UIView and subviews translucent as one layer, not individually

iOS controlling UIView alpha behaviour for subviews

Nhưng, như tôi đang viết một lib, tôi không muốn các dự án phải thiết lập chính toàn cầu này, và ảnh hưởng đến hành vi của các dự án chính.

Có cách nào khác để đạt được điều này không? Tôi không muốn quay vòng qua tất cả các bản xem trước và đặt alpha của từng tiểu sử, vì dự án bao gồm lib của tôi có thể bật khóa này ...

Trả lời

16

Có, bạn có thể đặt shouldRasterize lớp của chế độ xem.

containerView.layer.shouldRasterize = YES; 
// Not setting rasterizationScale, will cause blurry images on retina displays: 
containerView.layer.rasterizationScale = [[UIScreen mainScreen] scale]; 

Điều này sẽ có tác dụng tương tự như UIViewGroupOpacity nhưng chỉ cho containerView và nó subviews.

+0

Tính năng này có hoạt động nếu superView là chế độ xem siêu cho cấu trúc phân cấp không? Dường như không có bất kỳ ảnh hưởng nào trong iOS 7. – MobileVet

0

For iOS 7.0 và sau này:

Kể từ iOS 7.0, điều này có thể được kiểm soát đối với từng CALayer riêng thông qua allowsGroupOpacity tài sản. Bằng cách đặt nó thành YES, bạn sẽ nhận được cùng một hành vi như thể UIViewGroupOpacity được đặt, nhưng chỉ dành cho lớp cụ thể đó.

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