Apakah ada yang tahu tentang kontrol yang akan meniru tampilan blur gaya iOS7.
Saya berasumsi bahwa mungkin ada semacam subkelas UIView yang akan meniru perilaku tersebut.
Saya berbicara tentang jenis tampilan yang memburamkan latar belakang dengan sangat tebal sehingga memiliki efek tarik dari tampilan latar belakang.
Jawaban:
Anda mungkin dapat memodifikasi sesuatu seperti RWBlurPopover Bin Zhang untuk melakukan ini. Komponen itu menggunakan GPUImage saya untuk menerapkan Gaussian blur ke komponen di bawahnya, tetapi Anda dapat dengan mudah menggunakan CIGaussianBlur untuk hal yang sama. GPUImage mungkin lebih cepat .
Komponen tersebut bergantung pada kemampuan Anda untuk menangkap tampilan di balik tampilan yang Anda sajikan, dan mungkin mengalami masalah dengan tampilan yang bergerak di balik konten ini. Kebutuhan untuk melakukan perjalanan melalui Core Graphics untuk meraster tampilan latar belakang akan memperlambat segalanya, jadi kami mungkin tidak memiliki akses langsung yang memadai untuk dapat melakukan ini dengan cara yang baik untuk overlay pada tampilan animasi.
Sebagai pembaruan di atas, saya baru-baru ini mengerjakan ulang blur di GPUImage untuk mendukung radius variabel, memungkinkan replikasi lengkap ukuran blur di tampilan pusat kendali iOS 7. Dari situ, saya membuat kelas GPUImageiOS7BlurFilter yang merangkum ukuran blur yang tepat dan koreksi warna yang tampaknya digunakan Apple di sini. Beginilah perbandingan blur GPUImage (di kanan) dengan blur bawaan (di kiri):
Saya menggunakan 4X downsampling / upsampling untuk mengurangi jumlah piksel yang harus dioperasikan oleh Gaussian blur, sehingga iPhone 4S dapat memburamkan seluruh layar dalam waktu sekitar 30 ms menggunakan operasi ini.
Anda masih memiliki tantangan tentang cara menarik konten ke dalam keburaman ini dari pandangan di belakang yang satu ini dengan cara yang baik.
sumber
Saya menggunakan
FXBlurView
yang berfungsi dengan baik di iOS5 +https://github.com/nicklockwood/FXBlurView
CocoaPods:
Saya menambahkannya dengan menggunakan:
sumber
FXBlurView
di atas aUIScrollView
saya juga mendapat hasil yang lamban. Saya yakin ini ada hubungannya dengan cara menambahkan blur. Apple, jika saya tidak salah, langsung mengakses GPU saat menggunakan blurnya sendiri, yang tidak dapat kami lakukan sebagai pengembang. Karenanya, solusi @cprcrack sebenarnya adalah solusi terbaik di sini.PERINGATAN: seseorang di komentar menyatakan bahwa Apple menolak aplikasi menggunakan teknik ini. Itu TIDAK terjadi pada saya, tetapi hanya untuk pertimbangan Anda.
Ini mungkin mengejutkan Anda, tetapi Anda dapat menggunakan UIToolbar , yang sudah menyertakan efek standar tersebut (hanya iOS 7+). Dalam Anda melihat viewDidLoad pengontrol:
sumber
viewDidLoad
seperti ini. - (void) viewDidLoad {[super viewDidLoad]; self.view = [[UIToolbar alokasi] initWithFrame: CGRectZero]; } Dalam kasus saya, saya mengatur tampilan saya secara terprogram (gaya lama). Saya memberikan suara positif untuk solusi ini karena UIToolbar mewarisi UIView sehingga pada dasarnya saya tidak melihat masalah apa pun dalam solusi ini. Saya akan menguji lebih banyak saat saya mengikuti pengembangan & menguji solusi ini.Sejak iOS8, Anda dapat menggunakan UIBlurEffect .
Ada contoh bagus di iOS8Sampler dengan UIBlurEffect dan UIVibrancyEffect .
sumber
UIVisualEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; UIVisualEffectView *blurView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
Cara baru terbaik untuk mendapatkan Overlay yang kabur adalah dengan menggunakan Fitur baru iOS 8 UIVisualEffectView.
UIBlurEffect mendukung tiga jenis Style. Gelap, Terang, dan Cahaya Ekstra.
sumber
Anda dapat membuat kelas dengan UIToolBar yang merupakan subkelas dari UIView dan membuat instance di pengontrol tampilan terpisah. Pendekatan ini mendemonstrasikan UIToolBar tembus pandang (disubkelas oleh UIView) yang memberikan umpan balik langsung (dalam hal ini untuk AVCaptureSession).
YourUIView.h
YourUIView.m
Setelah UIView di atas telah disesuaikan, lanjutkan dan buat kelas yang merupakan subkelas dari ViewController. Di bawah ini saya telah membuat kelas yang menggunakan sesi AVCapture. Anda harus menggunakan AVCaptureSession untuk mengganti konfigurasi kamera bawaan Apple. Dengan demikian Anda dapat melapisi UIToolBar tranclucent dari kelas YourUIView .
YourViewController.h
YourViewController.m
sumber