Saya menggunakan UIAlertController baru untuk menampilkan peringatan. Saya memiliki kode ini:
// nil titles break alert interface on iOS 8.0, so we'll be using empty strings
UIAlertController *alert = [UIAlertController alertControllerWithTitle: title == nil ? @"": title message: message preferredStyle: UIAlertControllerStyleAlert];
UIAlertAction *defaultAction = [UIAlertAction actionWithTitle: cancelButtonTitle style: UIAlertActionStyleCancel handler: nil];
[alert addAction: defaultAction];
UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController;
[rootViewController presentViewController:alert animated:YES completion:nil];
Sekarang saya ingin mengubah judul dan font pesan, warna, ukuran dan sebagainya. Apa cara terbaik untuk melakukan ini?
Edit: Saya harus memasukkan seluruh kode. Saya membuat kategori untuk UIView sehingga saya dapat menunjukkan peringatan yang tepat untuk versi iOS.
@implementation UIView (AlertCompatibility)
+( void )showSimpleAlertWithTitle:( NSString * )title
message:( NSString * )message
cancelButtonTitle:( NSString * )cancelButtonTitle
{
float iOSVersion = [[UIDevice currentDevice].systemVersion floatValue];
if (iOSVersion < 8.0f)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: title
message: message
delegate: nil
cancelButtonTitle: cancelButtonTitle
otherButtonTitles: nil];
[alert show];
}
else
{
// nil titles break alert interface on iOS 8.0, so we'll be using empty strings
UIAlertController *alert = [UIAlertController alertControllerWithTitle: title == nil ? @"": title
message: message
preferredStyle: UIAlertControllerStyleAlert];
UIAlertAction *defaultAction = [UIAlertAction actionWithTitle: cancelButtonTitle
style: UIAlertActionStyleCancel
handler: nil];
[alert addAction: defaultAction];
UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController;
[rootViewController presentViewController:alert animated:YES completion:nil];
}
}
ios
objective-c
ios8
uialertview
uialertcontroller
Libor Zapletal
sumber
sumber
DISCLAIMER:
Untuk siapa saja yang membaca jawaban di bawah ini. Apple akan menolak aplikasi Anda. Jika Anda cenderung menggunakan Api pribadi. Dan di bawah jawaban ITU APA YANG TERJADI ..Jawaban:
Tidak yakin apakah ini bertentangan dengan API / properti pribadi tetapi menggunakan KVC berfungsi untuk saya di ios8
Sebagai catatan, dimungkinkan juga untuk mengubah font tindakan peringatan, menggunakan API pribadi tersebut. Sekali lagi, ini mungkin membuat aplikasi Anda ditolak, saya belum mencoba mengirimkan kode tersebut.
Untuk Swift 4.2 di XCode 10 dan 2 baris terakhir sekarang:
sumber
attributedTitle
untuk judul danattributedMessage
pesan. Tidak yakin apakah itu solusi terbaik tetapi untuk saat ini sudah cukup baik untuk saya.UIAlertController
. Bagaimana seseorang bisa melakukan hal yang samaUIAlertAction
?Anda dapat mengubah warna tombol dengan menerapkan warna tint ke UIAlertController.
Di iOS 9, jika warna warna jendela diatur ke warna kustom, Anda harus menerapkan warna warna tepat setelah menampilkan peringatan. Jika tidak, warna rona akan disetel ulang ke warna rona jendela kustom Anda.
sumber
Anda dapat mengubah warna teks tombol menggunakan kode ini:
Mungkin ini akan membantu Anda.
sumber
Keluaran
sumber
Terjemahan cepat dari jawaban @ dupuis2387. Mengerjakan sintaks untuk menyetel
UIAlertController
warna dan font judul melalui KVC menggunakanattributedTitle
kunci.sumber
tintColor
padaview
atau melaluiappearanceWhenContainedIn
, tetapi rona akan hilang segera setelah Anda menyentuhnya. Masih mencari jawaban.self.presentViewController(alertController, animated: true, completion: nil)
dapatkah kita mengubah font tombol "OK"?Gunakan
UIAppearance
protokol. Contoh untuk mengatur font - buat kategori untuk diperluasUILabel
:Dan penggunaannya:
Diuji dan bekerja dengan gaya
UIAlertControllerStyleActionSheet
, tapi saya rasa itu akan berhasilUIAlertControllerStyleAlert
juga.PS Lebih baik memeriksa ketersediaan kelas daripada versi iOS:
sumber
Gunakan
UIAppearance
protokol. Lakukan lebih banyak peretasan denganappearanceFont
mengubah fontUIAlertAction
.Buat kategori untuk
UILabel
UILabel + FontAppearance.h
UILabel + FontAppearance.m
Pemakaian:
Menambahkan
[[UILabel appearanceWhenContainedIn:UIAlertController.class, nil] setAppearanceFont:nil];
di
AppDelegate.m
untuk membuatnya bekerja untuk semuaUIAlertController
.sumber
if (self.font.pointSize == 13 && isBold) {
UIAlertAction
. Tapi sejauh yang saya tahu,UIAlertAction
tidak menggunakan aUILabel
. Ini menggunakanNSString
. github.com/nst/iOS-Runtime-Headers/blob/… Saya tidak tahu bagaimana Anda bisa menyesuaikan fontaNSString
.Swift 5 dan 5.1 . Buat file terpisah dan letakkan kode Kustomisasi UIAlertController di sana
Sekarang Pada tindakan apa pun Tampilkan Waspada
Hasil
sumber
Saya sedang menggunakannya.
Tambahkan satu baris (AppDelegate) dan berfungsi untuk semua UIAlertController.
sumber
Cepat 4
Contoh font khusus pada judul. Hal yang sama untuk komponen lain seperti pesan atau tindakan.
sumber
Berikut adalah ekstensi untuk Swift 4.1 dan Xcode 9.4.1:
sumber
Saya baru saja menyelesaikan penggantinya
UIAlertController
. Ini adalah satu-satunya cara yang masuk akal, saya pikir:Tua
Inilah metode saya di Swift yang mengumpulkan banyak informasi dari jawaban di sini
Ini berfungsi dalam beberapa situasi dengan sempurna, dan dalam situasi lain gagal total (warna tint tidak ditampilkan seperti yang diharapkan).
sumber
Anda dapat menggunakan perpustakaan eksternal seperti PMAlertController tanpa solusi alternatif, di mana Anda dapat mengganti UIAlertController Apple yang tidak dapat disesuaikan dengan peringatan yang sangat dapat disesuaikan.
Kompatibel dengan Xcode 8, Swift 3 dan Objective-C
Fitur:
sumber
actionButton.titleLabel.lineBreakMode = NSLineBreakByWordWrapping
bekerja dengan baik.Ada masalah dengan pengaturan warna rona pada tampilan setelah disajikan; bahkan jika Anda melakukannya di blok penyelesaian presentViewController: animated: penyelesaian :, ini menyebabkan efek flicker pada warna judul tombol. Ini ceroboh, tidak profesional, dan sama sekali tidak dapat diterima.
Solusi lain yang disajikan bergantung pada hierarki tampilan yang tetap statis, sesuatu yang tidak disukai Apple. Berharap solusi tersebut gagal dalam rilis iOS mendatang.
Satu-satunya cara yang pasti untuk memecahkan masalah ini dan melakukannya di mana-mana, adalah dengan menambahkan kategori ke UIAlertController dan swizzling viewWillAppear.
Header:
Pelaksanaan:
Tambahkan .pch (header yang telah dikompilasi) ke proyek Anda dan sertakan kategori:
Pastikan Anda mendaftarkan pch Anda dalam proyek dengan benar, dan itu akan menyertakan metode kategori di setiap kelas yang menggunakan UIAlertController.
Kemudian, dalam metode delegasi aplikasi Anda didFinishLaunchingWithOptions, impor kategori dan panggilan Anda
dan secara otomatis akan menyebar ke setiap instance UIAlertController dalam aplikasi Anda, baik diluncurkan oleh kode Anda atau orang lain.
Solusi ini berfungsi untuk iOS 8.X dan iOS 9.X dan tidak memiliki kedipan pendekatan perubahan warna setelah presentasi. Ini juga sepenuhnya agnostik sehubungan dengan hierarki tampilan dari sub-tampilan UIAlertController.
Selamat meretas!
sumber
Silakan temukan kategori ini . Saya dapat mengubah FONT dan Warna UIAlertAction dan UIAlertController.
Menggunakan:
sumber
Di Swift 4.1 dan Xcode 10
sumber
self.present(alertController, animated: true)
atauself.present(alert, animated: true)
.Solusi / Hack untuk iOS9
sumber
Saya bekerja untuk Urban Outfitters. Kami memiliki pod open source
URBNAlert
, yang kami gunakan di semua aplikasi kami. Ini didasarkan padaUIAlertController
, tetapi sangat dapat disesuaikan.Sumber di sini: https://github.com/urbn/URBNAlert
Atau cukup instal pod dengan menempatkannya
URBNAlert
di Podfile AndaBerikut beberapa contoh kode:
sumber
Untuk mengubah warna satu tombol seperti CANCEL menjadi warna merah, Anda dapat menggunakan properti gaya ini yang disebut UIAlertActionStyle.destructive:
sumber
Untuk iOS 9.0 dan yang lebih baru, gunakan kode ini di app delegate
sumber
sumber
Agak kikuk, tapi ini berfungsi untuk saya sekarang untuk mengatur warna latar belakang dan teks. Saya menemukannya di sini .
sumber
Saya telah membuat satu metode objektif-C
Kode berjalan sempurna di Xcode 8.3.1. Anda dapat menyesuaikan sesuai kebutuhan.
sumber
Saya hanya menggunakan permintaan semacam ini, tampaknya dan sistem, detailnya sedikit berbeda, jadi kami ... OC menyadari enkapsulasi jendela popup Alert dan Sheet.
Sering ditemui dalam perkembangan sehari-hari perlu menambahkan angka ke Waspada atau mengubah warna tombol, seperti "sederhana" permintaan, hari ini membawa dan komponen sistem yang sangat mirip dan sepenuhnya dapat memenuhi permintaan komponen kemasan yang disesuaikan.
Github: https://github.com/ReverseScale/RSCustomAlertView
sumber