iOS.TextKit.01.凸版印刷效果

1、案例视图,如下图

2、代码

TextKit01ViewController.h


#import <UIKit/UIKit.h>

@interface TextKit01ViewController : UIViewController

@property (nonatomic,strong) IBOutlet UITextView *textView;
// 文本可以排版的区域
@property (nonatomic,strong) NSTextContainer *textContainer;
// 设置文本风格
- (void) markWord:(NSString*)word inTextStorage:(NSTextStorage*)textStorage;

@end

TextKit01ViewController.m


#import "TextKit01ViewController.h"

@interface TextKit01ViewController ()

@end

@implementation TextKit01ViewController

- (void)viewDidLoad
{
[super viewDidLoad];

CGRect textViewRect = CGRectInset(self.view.bounds, 10.0, 20.0);

// 1、创建储存文本对象textStorage
NSTextStorage *textStorage = [[NSTextStorage alloc] initWithString:self.textView.text];

// 2、创建文字排版对象layoutManager
NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init];

// 3、创建文本排版的区域textContainer
self.textContainer = [[NSTextContainer alloc] initWithSize:textViewRect.size];

// 4、设置textStorage与layoutManager的关系
[textStorage addLayoutManager:layoutManager];

// 5、设置layoutManager与textContainer的关系
[layoutManager addTextContainer:self.textContainer];

// 6、重新构建原来的textview控件
[self.textView removeFromSuperview];
self.textView = [[UITextView alloc] initWithFrame:textViewRect textContainer:self.textContainer];
[self.view addSubview:self.textView];

// 7、设置textStorage中文本的风格
[textStorage beginEditing];

NSDictionary *attrsDic = @{NSTextEffectAttributeName:NSTextEffectLetterpressStyle};
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:self.textView.text attributes:attrsDic];
[textStorage setAttributedString:attrStr];

[self markWord:@"我" inTextStorage:textStorage];
[self markWord:@"I" inTextStorage:textStorage];

[textStorage endEditing];

}

-(void)markWord:(NSString *)word inTextStorage:(NSTextStorage *)textStorage
{
// 1、创建正则表达式regex
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:word options:0 error:nil];

// 2、扫描textStorage中的文本
NSArray *matches = [regex matchesInString:self.textView.text options:0 range:NSMakeRange(0, [self.textView.text length])];

// 3、为找到的文本内容设置风格
for (NSTextCheckingResult *match in matches) {
NSRange matchRange = [match range];
[textStorage addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:matchRange];
}
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

 

iOS.TextKit.01.凸版印刷效果,布布扣,bubuko.com

时间: 2024-10-08 18:32:55

iOS.TextKit.01.凸版印刷效果的相关文章

iOS基础 01 构建HelloWorld,剖析并真机测试

iOS基础 01 构建HelloWorld,剖析并真机测试 前言: 从控制台输出HelloWorld是我们学习各种语言的第一步,也是我们人生中非常重要的一步. 多年之后,我希望我们仍能怀有学习上进的心情,继续以HelloWorld去认识这世界上更多的东西. 本篇以HelloWorld作为切入点,向大家系统介绍什么事iOS应用以及如何使用Xcode创建iOS应用. 目录: 1. 创建HelloWorld工程 1.1. 设计界面 1.2. 真机测试 2. Xcode中的iOS工程模板 2.1. Ap

iOS.TextKit.02.文字图片混合排版

1.案例如图 2.代码 TextKit02ViewController.h #import <UIKit/UIKit.h> @interface TextKit02ViewController : UIViewController @property (nonatomic,strong) IBOutlet UITextView *textView; @property (nonatomic,weak) IBOutlet UIImageView *imageView; // 文本可以排版的区域

XE8 for iOS 状态栏的几种效果

XE8 实现 iOS 状态栏的几种效果: 一.状态栏底色: 开一个新工程. 设定 Fill.Color 颜色属性. 设定 Fill.Kind = Solid. 无需修改任何官方源码. 二.隐藏状态栏(全屏): 开一个新工程. 设定 BorderStyoe = None. 无需修改任何官方源码. 三.透明状态栏(能见底图): 开一个新工程. 设定底图 Fill.Bitmap.Bitmap. 设定 Fill.Bitmap.WrapMode = TitleStretch. 设定 Fill.Kind =

IOS把图片做成圆形效果

利用CAShapeLayer可以制作出任意的几何图形,把它作为UIImageView的遮罩,达到把图片做成圆形效果. imgView = [[UIImageView alloc]initWithFrame:CGRectMake(10, 35, 80, 80)]; imgView.image = [UIImage imageNamed:@"ma.jpg"]; UIBezierPath* path = [UIBezierPath bezierPathWithArcCenter:CGPoin

Windows Phone中使用Storyboard做类似 IOS 屏幕小白点的效果

windows phone中做动画其实很方便的,可以使用Blend拖来拖去就做出一个简单的动画,下面做了一个 ios屏幕小白点的拖动效果,包括速度判断移动 使用Blend生成以下代码 <Storyboard x:Name="HandFunGTLSb"><!-- 向左滑动时动画 --> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransfo

ios点击产生波纹效果

ios点击产生波纹效果 by 伍雪颖 - (void)viewDidLoad { [super viewDidLoad]; RippleView = [[UIView alloc] initWithFrame:(CGRect){0,0,300,300}]; RippleView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.3]; RippleView.layer.cornerRadius = 150; Rip

iOS动态元素引导图效果实现

原文链接: iOS动态元素引导图效果实现 简书主页:http://www.jianshu.com/users/37f2920f684 Github主页:https://github.com/MajorLMJ iOS开发者公会-技术1群 QQ群号:87440292 iOS开发者公会-技术2群 QQ群号:232702419 iOS开发者公会-议事区   QQ群号:413102158

IOS仿Android九宫格解锁效果[转]

原理很简单,监听view中touch的一系列事件,当判定手指位置在某个按钮附近的时候则判断此按钮选中,并画出线. 效果图如下: 你可以在NineGridUnlockView.m文件中方法 touchesEnded:withEvent: 的最后添加自己的代码来决定画线完成后来做什么. (当前工程还没有加入委托,后续可能加上) 代码地址: https://github.com/lcwangchao/NineGridUnlocker IOS仿Android九宫格解锁效果[转]

iOS - 用 UIBezierPath 实现果冻效果

最近在网上看到一个很酷的下拉刷新效果(http://iostuts.io/2015/10/17/elastic-bounce-using-uibezierpath-and-pan-gesture/).自己试着实现了一下其中的果冻回弹效果. 效果 DEMO 由于文笔不太好-.- ,建议先下载demo,再结合下面的分析,会好理解点.地址https://github.com/Resory/RYCuteView 逻辑 下图p1,蓝色部分图形是一个CAShapeLayer,他的形状由UIBezierPat