現(xiàn)在App中用到提示框是不可避免的赦颇,但是系統(tǒng)UIAlertController的效果不太滿意,自能自定義UIAlertController赴涵,我是用runtime與kvc結(jié)合實(shí)現(xiàn)自定義UIAlertController媒怯。
這是基本寫法
?UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"性別只能修改一次,注冊(cè)后不能更改"message:nilpreferredStyle:UIAlertControllerStyleActionSheet];
? ? UIAlertAction *nan = [UIAlertAction actionWithTitle:@"男性"style:UIAlertActionStyleDefault handler:^(UIAlertAction *_Nonnullaction) {
? ? ? ? NSLog(@"男性");
? ? }];
? ? UIAlertAction *nv = [UIAlertAction actionWithTitle:@"女性"style:UIAlertActionStyleDefault handler:^(UIAlertAction *_Nonnullaction) {
? ? ? ? NSLog(@"女性");
? ? }];
? ? UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消"style:UIAlertActionStyleCancel handler:^(UIAlertAction *_Nonnullaction) {
? ? ? ? NSLog(@"取消");
? ? }];
? ? [alert addAction:nan];
? ? [alert addAction:nv];
? ? [alert addAction:cancel];
? ? [selfpresentViewController:alert animated:YEScompletion:nil];
如果需要把 “男性” 字體顏色改為黃色,那該怎么辦那髓窜?
那就需要使用runtime和kvc結(jié)合了扇苞,首先使用runtime來(lái)獲取UIAlertController和UIAlertAction的所有屬性。在我以前的文章中詳細(xì)講解過(guò)寄纵,在這里就不再多說(shuō)了鳖敷。
文章地址:Runtime與KVC詳解
只需要添加這一句即可
//修改 “男性” 字體的顏色
[nansetValue:[UIColor yellowColor] forKey:@"_titleTextColor"];
如果需要把 “性別只能修改一次,注冊(cè)后不能更改” 字體改為30px,那該怎么辦那程拭?
只需要添加這幾句即可
NSMutableAttributedString *attibuedString = [[NSMutableAttributedString alloc]initWithString:@"性別只能修改一次,注冊(cè)后不能更改"];
? ? [attibuedStringaddAttribute:NSFontAttributeNamevalue:[UIFontsystemFontOfSize:30]range:NSMakeRange(0, attibuedString.length)];
? ? [alertsetValue:attibuedStringforKey:@"attributedTitle"];
這就是簡(jiǎn)單的修改UIAlertController的樣式定踱,可以簡(jiǎn)單的解決一些問(wèn)題,這樣也有些不足恃鞋,如果想要修改 “男性” 字體的大小崖媚,就實(shí)現(xiàn)不了亦歉。就需要你自定義UIAlertController了。
在使用過(guò)程中只需要傳入你需要顯示的內(nèi)容和背景圖即可
self.alertView = [[AlertView alloc]initWithFrame:CGRectMake(0, kScrentH, kScrentW, 196)];
? ? NSArray *titles = @[@"性別只能選擇一次, 注冊(cè)后不能修改", @"男性", @"女性", @"取消"];
? ? NSArray *actionBgImage = @[@"彈窗(提示)", @"彈窗(性別)", @"彈窗(性別)", @"彈窗(取消)"];;
? ? [self.alertViewalertTitles:titlesactionBgImages:actionBgImage];
? ? [self.viewaddSubview:self.alertView];
? ? //block回調(diào)事件
? ? __weakViewController*weakSelf =self;
? ? [self.alertViewsetClickBtn:^(NSIntegertag) {
? ? ? ? switch(tag) {
? ? ? ? ? ? case1:
?? ? ? ? ? ? ? ? NSLog(@"男性");
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case2:
? ? ? ? ? ? ? ? NSLog(@"女性");
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case3:
? ? ? ? ? ? ? ? NSLog(@"取消");
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? default:
? ? ? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? [weakSelf.alertViewalertDisAppear];
? ? }];
///動(dòng)畫開始(AlertView彈出)
- (void)alertAppear;
///動(dòng)畫結(jié)束(AlertView退出)
- (void)alertDisAppear;
用法簡(jiǎn)單至扰,歡迎來(lái)討論鳍徽、使用。
Demo地址:Demo的地址