2014-06-09 22 views
16

Trong tôi ViewController.swift:UIVisualEffectView làm cho khác nhau trên các thiết bị khác nhau

var img = UIImageView(image: UIImage(named: "puddles")) 

img.frame = view.bounds; 
view.addSubview(img); 


var effect = UIBlurEffect(style: UIBlurEffectStyle.Light) 
var effectView = UIVisualEffectView(effect: effect) 
effectView.frame = CGRectMake(0, 0, 500, 500) 
view.addSubview(effectView) 

Những hình ảnh như trả lại bằng cách sử dụng mã trên trong iPad Air, iPhone 5, hoặc iPhone 5S mô phỏng:

woof, doesn't that look so good

Hình ảnh như được hiển thị bằng mã ở trên trong các trình mô phỏng iPhone 4S, iPad 2 hoặc iPad Retina:

I can't see my doge!

Lưu ý: Cả hai hình ảnh trên được lấy từ mô phỏng, nhưng điều này có thể được sao chép trên các thiết bị thực tế chạy iOS 8 Beta 1 là tốt.

Rõ ràng, tôi muốn đạt được hiệu ứng đầu tiên trên tất cả các thiết bị. Làm cách nào tôi có thể đạt được hiệu ứng đầu tiên giống nhau trên tất cả các thiết bị?

+1

Bạn đang sử dụng Swift trong mẫu mã của bạn, nhưng không có gì về câu hỏi của bạn mà phụ thuộc vào đó là . Vui lòng chỉ sử dụng [swift-language] cho các câu hỏi về ngôn ngữ. – rickster

Trả lời

25

UIVisualEffectView trong iOS 8 có khá nhiều điều tương tự như (trước đây là API riêng tư) mờ và hiệu ứng rung động được thấy trong iOS 7. Giống như hiệu ứng iOS 7, chúng trở lại triển khai đồ họa đơn giản trên phần cứng không thể hiển thị các hiệu ứng đồ họa phức tạp như vậy trong thời gian thực.

+1

Điều này thật thú vị, nhưng không đáng ngạc nhiên. Bằng cách nhìn vào một cái gì đó như Trung tâm điều khiển, bạn có thể thấy chính xác cùng một hiệu ứng được trả lại. Trên các thiết bị như iPad Retina, trong Trung tâm điều khiển, không có sự mờ nhạt nào cả, giống như trong câu hỏi của tôi. Tôi thậm chí còn không nhận ra điều này. Có vẻ như 'UIVisualEffectView' có nghĩa là cho thanh công cụ và tương tự, và nếu tôi chỉ đơn giản là làm mờ nền tôi có thể sử dụng làm mờ tĩnh hoặc một cái gì đó như [' FXBlurView'] (https://github.com/nicklockwood/FXBlurView) . –

+3

Tôi chỉ mất 2 giờ cố gắng hiểu lý do tại sao cái nhìn ngu ngốc không hiển thị mờ, mặc dù đã sử dụng nó tốt trong một dự án khác. Hóa ra tôi đang sử dụng bộ giả lập iPad 2 ... mà bạn thấy là màu trắng. Ugh, đau đớn. Chúc họ có một chế độ tĩnh so với chế độ live thay vì vào mùa thu này ... trông khá khác biệt. – MobileVet

+1

Wow, tôi muốn 1,5 giờ của cuộc sống của tôi trở lại Apple. Họ 'có thể' muốn thêm (đọc: NÊN DEFINITELY) này để các tài liệu ... –

5

Gần đây, chúng tôi đã gặp sự cố này khi Chế độ xem hiệu ứng hình ảnh của chúng tôi là màu xám xấu xí trên một trong các máy của nhà phát triển của chúng tôi.

UIVisualEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; 
UIVisualEffectView *visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect]; 

Nó chỉ ra rằng họ đã bật Low Quality Graphics Override trên Trình mô phỏng iOS của họ. Quay lại tùy chọn này để Device Default khắc phục sự cố và hiển thị chế độ xem mờ đẹp mắt.

iOS Simulator> Menu Bar> Debug> Graphics Chất lượng Override> Device Mặc định

Low quality graphics override option in iOS Simulator

+1

Bạn tuyệt vời, nó giúp tôi tiết kiệm từ việc chuyển nó vào thiết bị chỉ để kiểm tra hiệu ứng mờ. cảm ơn người đàn ông! –

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