文章目录
1.隐私政策,用户协议的UI布局
需求:注册/登录页面,页面底部添加隐私政策和用户协议的展示UI
解决方案:使用UITextView,有一个方法- (void)addAttribute:(NSAttributedStringKey)name value:(id)value range:(NSRange)range;来实现效果
Show your the Code
// 同意文本
UITextView *tvAgree = [[UITextView alloc]init];
tvAgree.userInteractionEnabled = YES;
tvAgree.font = SET_FONT(12.0);//字体
tvAgree.textColor = TextLightGrayCOLOR;//颜色
tvAgree.editable = NO;//必须禁止输入,否则点击将弹出输入键盘
tvAgree.scrollEnabled = NO;//禁止滚动
tvAgree.delegate = self;//设置代理(UITextViewDelegate)
tvAgree.textContainerInset = UIEdgeInsetsMake(0,0, 0, 0);
[self addSubview:tvAgree];//将textView添加到父视图上
[tvAgree mas_makeConstraints:^(MASConstraintMaker *make) {
//masonry布局
make.right.mas_equalTo(-16);
make.left.mas_equalTo(30);
make.centerY.equalTo(self.mas_centerY);
make.height.mas_equalTo(20);
}];
UITextView的NSLinkAttributeName属性,就是点击链接跳转
实现UITextView的代理,调用如下:
#pragma mark - UITextViewDelegate
/// 隐私,协议
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {
/// 隐私
if ([[URL scheme] isEqualToString:@"privacy"]){
/// 跳转隐私政策界面
}
/// 协议
else if ([[URL scheme] isEqualToString:@"delegate"]) {
/// 跳转用户协议界面
}
return YES;
}
效果如下:
2.文字样式处理总结(字体、前背景色、斜体、加粗、对齐、行间距、段间距、动态获取字符串label宽高等)
需求:iOS开发中,常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求。
解决办法:
NSMuttableAttstring(带属性的字符串),可以灵活实现以上功能。
NSMutableParagraphStyle段落风格,设置行间距、段间距、缩进、对齐方式等。
2.1 实例化方法和使用方法
实例化方法:
使用字符串初始化
- (id)initWithString:(NSString *)str;
//例:
NSMutableAttributedString *AttributedStr = [[NSMutableAttributedStringalloc]initWithString:@"文字样式处理"];
字典中存放一些属性名和属性值:
- (id)initWithString:(NSString *)str attributes:(NSDictionary *)attrs;
//如:
NSDictionary *attributeDict = [NSDictionarydictionaryWithObjectsAndKeys:
[UIFontsystemFontOfSize:15.0],NSFontAttributeName,
[UIColorredColor],NSForegroundColorAttributeName,
NSUnderlineStyleAttributeName,NSUnderlineStyleSingle,nil];
NSMutableAttributedString *AttributedStr = [[NSMutableAttributedStringalloc]initWithString:@"文字样式处理" attributes:attributeDict];
使用NSAttributedString初始化,跟NSMutableString,NSString类似:
- (id)initWithAttributedString:(NSAttributedString *)attester;
使用方法:
为某一范围内文字设置多个属性
- (void)setAttributes:(NSDictionary *)attrs range:(NSRange)range;
为某一范围内文字添加某个属性
- (void)addAttribute:(NSString *)name value:(id