Có cách nào để làm cho UIPopOver trong suốt (alpha = 0,75 hoặc hơn). Rất tiếc, không có thuộc tính alpha cho UIPopOver. Tôi cần trình bày một cửa sổ bật lên để khung nhìn bên dưới nó sẽ vẫn nhìn thấy được một phần. Bất cứ ý tưởngTransparent UIPopover
Trả lời
popoverController.contentViewController.view.alpha = 0.5;
alpha là một tài sản của một UIView vì vậy bạn cần phải nhận được quan điểm của popOver và sau đó thiết lập các alpha để quan điểm đó.
Hiện tại không có thuộc tính nào để đặt alpha là UIPopoverController
.
Nếu bạn làm: popoverController.contentViewController.view.alpha = 0.5;
Bên trong cái nhìn & nội dung sẽ transparant và không phải là UIPopoverController
riêng của mình.
Bắt đầu với iOS5.0, người ta có thể cung cấp một nền tùy chỉnh cho UIPopoverController
. Nền đó phải được lấy từ số UIPopoverBackgroundView
cung cấp các thuộc tính UIView
bình thường như alpha
. Lưu ý rằng tên hơi khó hiểu - UIPopoverBackgroundView
cung cấp khung hình, mũi tên cũng như hình nền.
Vì vậy, nếu bạn cần một hoàn toàn bán trong suốt UIPopoverController
, tất cả các bạn phải làm là cung cấp một lớp UIPopoverBackgroundView
mà đặt alpha
của nó đối với một cái gì đó bên dưới 1.0
. Bạn cũng sẽ cần phải chắc chắn rằng khung nhìn contentViewController của bạn là (hoàn toàn) trong suốt.
Ví dụ:
Để biết chi tiết, see the popoverBackgroundViewClass
property of UIPopoverController
:
popoverBackgroundViewClass
Lớp sử dụng để hiển thị các nội dung nền popover.
@property (nonatomic, readwrite, retain) Class popoverBackgroundViewClass
Thảo luận
Giá trị mặc định của thuộc tính này là con số không, mà chỉ ra rằng bộ điều khiển popover nên sử dụng sự xuất hiện popover mặc định. Đặt thuộc tính này thành một giá trị khác không phải là nguyên nhân khiến trình điều khiển bật lên sử dụng lớp được chỉ định để vẽ nội dung nền của cửa sổ bật lên. Lớp bạn chỉ định phải là lớp con của UIPopoverBackgroundView.
Tính khả dụng Có sẵn trong iOS 5.0 trở lên. Đã khai báo trong UIPopoverController.h
Havent đã sử dụng nó nhưng tốt để xem có cuối cùng nhiều hơn để tùy chỉnh của một UIPopover – Jasper
Hỗ trợ này đã không được chấp nhận trong iOS 9.0. Đừng cho rằng bất cứ ai biết nếu có một cách mới hơn? –
Bây giờ bạn có thể sử dụng thuộc tính backgroundColour của popoverPresentationController để thực hiện việc này, ví dụ:
if let popoverPresentationController = myController.popoverPresentationController {
popoverPresentationController.backgroundColor = UIColor(white: 1, alpha: 0.5)
}
(đừng quên để thiết lập các quan điểm trong popover và điều khiển trong đó nhằm minh bạch cũng như phù hợp với hiệu ứng mà bạn đang cố gắng để đạt được)
Xem this SO answer để biết thêm chi tiết.
trong khi điều này nên làm việc trong lý thuyết, trong thực tế nó sẽ không hoạt động. –