首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >带有箭头的UITextView周围的自定义边框

带有箭头的UITextView周围的自定义边框
EN

Stack Overflow用户
提问于 2015-01-06 07:27:22
回答 2查看 725关注 0票数 1

我需要让UITextView看起来像一个箭头聊天泡泡。我知道如何更改边框颜色、半径和边框宽度。问题是我想把箭从泡泡中拔出来。有什么办法吗?

我试着做自定义视图,里面有气泡图像,UITextView在里面,但这似乎不是最好的解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-13 10:52:01

回答你自己的问题总是很好..。因此,整整一天,我都在尝试创建这个气泡,最终我用UIImageViewUITextView子视图创建了UITextView。第一件事是像这样使用resizableImageWithCapInsets

开关(self.arrowDirection) { case BUBBLE_ARROW_DIRECTION_LEFT: imageForBubble = [UIImage imageNamed:@"chatBoxLeftSmall.png“BUBBLE_ARROW_DIRECTION_LEFT 50,30,30)];大小写BUBBLE_ARROW_DIRECTION_RIGHT: imageForBubble = [UIImage imageNamed:@"chatBoxRightSmall.png“imageForBubble 30,30,40];中断;默认情况:中断;}

并使用如下动画调整其大小:

-(void) setSizeForTextView:(UITextView *)textView { CGSize newSize = textView CGSize MAXFLOAT);CGRect newFrame = textView.frame;newFrame.size = CGSizeMake(fmaxf(newSize.width,textView.frame.size.width),newSize.height);

代码语言:javascript
运行
AI代码解释
复制
if(newFrame.size.height > self.initialTextViewFrame.size.height){

    [UIView animateWithDuration:0.1f
                         animations:^{
                             [self setFrame:CGRectMake(self.frame.origin.x,
                                                       self.frame.origin.y,
                                                       kMAX_WIDTH,
                                                       newFrame.size.height+kTXT_VIEW_PADDING_BOTTOM)];
                             [self.bubbleImage setFrame:CGRectMake(self.bubbleImage.frame.origin.x,
                                                                   self.bubbleImage.frame.origin.y,
                                                                   self.bubbleImage.frame.size.width,
                                                                   newFrame.size.height + (kTXT_VIEW_PADDING_BOTTOM - kBUBBLE_IMAGE_PADDING_BOTTOM))];
                             textView.frame = newFrame;
                         }
                         completion:^(BOOL finished){
                         }];

}else if (newFrame.size.height < self.initialTextViewFrame.size.height){

    [UIView animateWithDuration:0.1f
                         animations:^{
                             [self setFrame:CGRectMake(self.frame.origin.x,
                                                       self.frame.origin.y,
                                                       kMAX_WIDTH,
                                                       self.initialViewFrame.size.height)];

                             [self.bubbleImage setFrame:CGRectMake(self.bubbleImage.frame.origin.x,
                                                                   self.bubbleImage.frame.origin.y,
                                                                   self.bubbleImage.frame.size.width,
                                                                   self.initialViewFrame.size.height-kBUBBLE_IMAGE_PADDING_BOTTOM)];
                             textView.frame = newFrame;
                         }
                         completion:^(BOOL finished){
                             textView.frame = self.initialTextViewFrame;
                         }];
}

}

如果有人能找到更好的方法来做这件事,请告诉我。我会坚持这一条。

票数 0
EN

Stack Overflow用户

发布于 2015-01-06 08:04:57

这里有一个制作自定义文本气泡的教程:文本泡泡。这是有点旧,但仍然适用。我已经用了很久了。

这里还有一个类似的问题,第二个答案看起来是你开始iOS中的语音Buuble的好地方

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27801787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档