您的位置:首页 > 其它

关于textkit富文本的练习

2016-01-07 14:20 330 查看
上午闲暇时间练习了一下textkit的基本功能练习

1.首先在viewdidload里

_strText = @"asjasdajksdh时空裂缝好色了符合啊我发哈我诶腹黑女为号发文发我份哈里斯的发生的房间卡萨:杀敌发回来说发生;分类看到asdf;jkaf ;laksjf as;df jaweriawejrf借我我哦加我覅哦啊额无法骂开了家阿斯顿;付款啦就是对方考虑;啊;费附加阿尔派为覅及咖啡了等级;看到了沙发加我配件";
_textView = [[UITextView alloc]initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height)];
_textView.backgroundColor = [UIColor cyanColor];
_textView.text =_strText;
_textView.font = [UIFont systemFontOfSize:15];
_textView.editable = NO;
_textView.delegate = self;
[self.view addSubview:_textView];

//图片位置
_imageView = [[UIImageView alloc]initWithFrame:CGRectMake(120, 120, 100, 100)];
_imageView.image = [UIImage imageNamed:@"01.jpg"];
_imageView.userInteractionEnabled = YES;
[self.view addSubview:_imageView];

UIPanGestureRecognizer * panges = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(imagepan:)];
[_imageView addGestureRecognizer:panges];

_textView.textContainer.exclusionPaths = @[[self bezierPath]];

[self normalAttribute];
[self setupEmojiAndLink];

//设置环绕的路径方法
-(UIBezierPath *)bezierPath
{
//设置环绕的路径
CGRect butter = [_textView convertRect:_imageView.frame fromView:self.view];
CGRect butter1 = CGRectMake(butter.origin.x, butter.origin.y, butter.size.width, butter.size.height*0.9);
UIBezierPath * path = [UIBezierPath bezierPathWithRect:butter1];

return path;
}


//在文字间添加表情方法
-(void)setupEmojiAndLink
{
NSMutableAttributedString * string = [_textView.attributedText mutableCopy];

//添加表情
UIImage * image1 = [UIImage imageNamed:@"01.jpg"];

NSTextAttachment * attachment = [[NSTextAttachment alloc]init];
attachment.bounds = CGRectMake(0, 0, 30, 30);
attachment.image = image1;
NSAttributedString * attachStr1 = [NSAttributedString attributedStringWithAttachment:attachment];
[string insertAttributedString:attachStr1 atIndex:50];

_textView.attributedText = [string copy];

}


//修改文字颜色,下划线等常规属性的设置
//修改颜色,大小,下划线等等
-(void)normalAttribute
{
NSMutableAttributedString * string = [_textView.attributedText mutableCopy];

//下划线
[string addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleSingle) range:NSMakeRange(0, 10)];
//双划线
[string addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleDouble) range:NSMakeRange(10, 10)];
//加粗下划线
[string addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleThick) range:NSMakeRange(20, 10)];
//分割下划线
[string addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleSingle|NSUnderlinePatternDot) range:NSMakeRange(30, 10)];

//字体颜色
[string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 10)];
//空心字
[string addAttribute:NSStrokeWidthAttributeName value:@(2) range:NSMakeRange(10, 10)];

_textView.attributedText = [string copy];

}


//手势拖动方法
//手势监听方法
-(void)imagepan:(id)sender
{
NSLog(@"1");

if ([sender isKindOfClass:[UIPanGestureRecognizer class]])
{
UIPanGestureRecognizer * oneSender = sender;
if (oneSender.state == UIGestureRecognizerStateBegan)
{
//返回新的坐标
_textPoint= [oneSender translationInView:_textView];
_imageCenter = _imageView.center;

}
else if (oneSender.state == UIGestureRecognizerStateChanged)
{
CGPoint currentPoint = [oneSender translationInView:_textView];

//获取开始坐标和改变坐标之差
CGFloat changeX = currentPoint.x-_textPoint.x;
CGFloat changeY = currentPoint.y-_textPoint.y;

CGPoint newCenter = _imageCenter;

newCenter.x +=changeX;
newCenter.y +=changeY;

_imageView.center = newCenter;

_textView.textContainer.exclusionPaths = @[[self bezierPath]];
}
else if (oneSender.state == UIGestureRecognizerStateEnded)
{
_imageCenter = CGPointZero;
_textPoint = CGPointZero;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: