新浪微博客户端(35)-使用NSMutableAttributedString实现多行文本的效果
DJComposeViewController.m
import "DJComposeViewController.h" #import "DJAccountTool.h" @implementation DJComposeViewController - (void)viewDidLoad { [super viewDidLoad]; [self initNavigationView]; [self initInputView]; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; self.navigationItem.rightBarButtonItem.enabled = NO; } /** 初始化NavigationView */ - (void)initNavigationView { self.view.backgroundColor = [UIColor whiteColor]; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:UIBarButtonItemStyleDone target:self action:@selector(finish)]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"发送" style:UIBarButtonItemStylePlain target:self action:@selector(send)]; UILabel *titleView = [[UILabel alloc] init]; titleView.width = 200; titleView.height = 44; titleView.numberOfLines = 0; // 设置titleView 为多行显示 titleView.textAlignment = NSTextAlignmentCenter; DJAccount *account = [DJAccountTool account]; NSString *nickName = account.screen_name; NSString *prefix = @"发微博"; NSString *str = [NSString stringWithFormat:@"%@\n%@",prefix,nickName]; NSRange nick_name_range = [str rangeOfString:nickName]; NSRange prefix_range = [prefix rangeOfString:prefix]; NSMutableAttributedString *titleStr = [[NSMutableAttributedString alloc] initWithString:str]; [titleStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:13] range:nick_name_range]; [titleStr addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:15] range:prefix_range]; titleView.attributedText = titleStr; self.navigationItem.titleView = titleView; } /** 初始化输入区域 */ - (void)initInputView { UITextView *inputView = [[UITextView alloc] init]; inputView.frame = self.view.bounds; [self.view addSubview:inputView]; } - (void)finish { [self dismissViewControllerAnimated:YES completion:nil]; } /** 发微博 */ - (void)send { } @end
最终效果: