轉發來自:http://blog.csdn.net/folish_audi/article/details/34087103ios
是否是發現原來這段代碼:api
#pragma mark -app
#pragma mark - alert delegateide
- (void) willPresentAlertView:(UIAlertView *)alertView測試
{ui
for (UIView *subViewin alertView.subviews).net
{代理
UILabel *tmpLabel = (UILabel *)subView;orm
tmpLabel.textAlignment =NSTextAlignmentLeft;blog
}
}
在iOS7.0及以上版本不能用(說明蘋果對私有api管理愈來愈嚴格,猜想),若是還想uialertview文字對其要費一些心思了。
若是你有這樣的需求:
1>message 信息顯示居左對齊,以下圖(iOS6.0和iOS7.1顯示)
![]()
![]()
2>在iOS7.0如下版本標題居中,message居左(如上圖)。
咱們對上述代理方法稍做更改以下:
#pragma mark -
#pragma mark - alert delegate
- (void) willPresentAlertView:(UIAlertView *)alertView
{
//因爲不但願標題也居左
NSInteger labelIndex = 1;
//在ios7.0一下版本這個方法是能夠的
for (UIView *subViewin alertView.subviews)
{
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1)
{
if ([subView isKindOfClass: [UILabelclass]])
{
if (labelIndex > 1)
{
UILabel *tmpLabel = (UILabel *)subView;
tmpLabel.textAlignment =NSTextAlignmentLeft;
}
//過濾掉標題
labelIndex ++;
}
}
}
}
但這隻能在ios7.0如下版本能夠生效;若是是8.0,處理方式還不同,具體以下:
- (void) showAlertWithMessage:(NSString *) message
{
//8.0
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1) {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"ffff"message:message preferredStyle:UIAlertControllerStyleAlert];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
//paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
paragraphStyle.alignment = NSTextAlignmentLeft;
//行間距
paragraphStyle.lineSpacing = 5.0;
NSDictionary * attributes = @{NSFontAttributeName : [UIFont systemFontOfSize:18.0], NSParagraphStyleAttributeName : paragraphStyle};
NSMutableAttributedString *attributedTitle = [[NSMutableAttributedString alloc] initWithString:message];
[attributedTitle addAttributes:attributes range:NSMakeRange(0, message.length)];
[alertController setValue:attributedTitle forKey:@"attributedMessage"];//attributedTitle\attributedMessage
//end ---
UIAlertAction *defaultAction1 = [UIAlertAction actionWithTitle:@"cancel"
style: UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {
UITextField *textField = alertController.textFields[0];
NSLog(@"text was %@", textField.text);
}];
UIAlertAction *defaultAction2 = [UIAlertAction actionWithTitle:@"ok"
style: UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {
NSLog(@"ok btn");
[alertControllerdismissViewControllerAnimated:YES completion:nil];
}];
[alertController addAction:defaultAction1];
[alertController addAction:defaultAction2];
//添加textfield
UIViewController *rootViewController = [UIApplicationsharedApplication].keyWindow.rootViewController;
[rootViewController presentViewController:alertController animated: YES completion: nil];
}else{
UIAlertView *tmpAlertView = [[UIAlertView alloc] initWithTitle:@"測試換行"
message:message
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"知道了", nil];
//若是你的系統大於等於7.0
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)
{
CGSize size = [self.messageString sizeWithFont:[UIFont systemFontOfSize:15] constrainedToSize:CGSizeMake(240, 1000) lineBreakMode:NSLineBreakByTruncatingTail];
UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 240, size.height)];
textLabel.font = [UIFont systemFontOfSize:15];
textLabel.textColor = [UIColor blackColor];
textLabel.backgroundColor = [UIColor clearColor];
textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textLabel.numberOfLines = 0;
textLabel.textAlignment = NSTextAlignmentLeft;
textLabel.text = self.messageString;
[tmpAlertView setValue:textLabel forKey:@"accessoryView"];
//這個地方別忘了把alertview的message設爲空
tmpAlertView.message = @"";
}
[tmpAlertView show];
}
}
這樣的話就能夠了。
調用這個方法:
- (void)viewDidLoad
{
[superviewDidLoad];
self.view.backgroundColor = [UIColorgrayColor];
self.messageString =@"1.第一行我是3個子\n2.第二行我是好幾個字反正目的是爲了和第一行區分開來\n3.哈哈我是襯托的";
UIButton *alertBtn = [[UIButtonalloc] initWithFrame:CGRectMake(0,200, 320, 40)];
[alertBtn setTitle:@"點我啊,我會alert" forState:UIControlStateNormal];
alertBtn.backgroundColor = [UIColorredColor];
[alertBtn addTarget:selfaction:@selector(alertBtnTapped)forControlEvents:UIControlEventTouchUpInside];
[self.viewaddSubview:alertBtn];
}
這裏別忘聲明一個屬性self.messageString
源文件下載:http://download.csdn.NET/detail/folish_audi/7543541