我需要让UITextView看起来像一个箭头聊天泡泡。我知道如何更改边框颜色、半径和边框宽度。问题是我想把箭从泡泡中拔出来。有什么办法吗?
我试着做自定义视图,里面有气泡图像,UITextView在里面,但这似乎不是最好的解决方案。
发布于 2015-01-13 10:52:01
回答你自己的问题总是很好..。因此,整整一天,我都在尝试创建这个气泡,最终我用UIImageView
和UITextView
子视图创建了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);
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;
}];
}
}
如果有人能找到更好的方法来做这件事,请告诉我。我会坚持这一条。
发布于 2015-01-06 08:04:57
这里有一个制作自定义文本气泡的教程:文本泡泡。这是有点旧,但仍然适用。我已经用了很久了。
这里还有一个类似的问题,第二个答案看起来是你开始iOS中的语音Buuble的好地方
https://stackoverflow.com/questions/27801787
复制相似问题