2011-01-13 19 views
5

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

4
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 đó.

+1

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. –

3

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.

Related question

6

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ụ:

enter image description here


Để 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

+0

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

+3

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? –

0

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.

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