ios - 如何像邮件一样在 UITextView 中显示图像并使其居中

标签 ios objective-c uiimageview uiimage uitextview

在 Mail 中,可以阅读由文本段落和占据整个宽度的图像以及更多文本组成的电子邮件。我想在我的应用程序(只读 TextView )中做完全相同的事情,除了我想限制它不填满整个宽度但始终保持在屏幕中心(即使在旋转之后)。我已经编写了一个解决方案,但我不确定如何使图像居中,或者可能有比我所做的更清洁/更好的方法。

我通过 NSMutableAttributedStringUITextView 中的文本末尾添加了一个 UIImage。我首先必须调整图像的大小,为此我使用了某人共享的 UIImage 类别,该类别将调整图像大小,不会降低图像质量(非常糟糕),并保持纵横比。

    NSMutableAttributedString *mutableAttString = [[NSMutableAttributedString alloc] initWithString:self.textView.text];
    UIImage *image = [UIImage imageNamed:@"myImage"];

    CGSize newSize = CGSizeMake(self.textView.frame.size.width, self.textView.frame.size.height);

    //resize image to fit scren width using category
    image = [image resizedImageWithContentMode:UIViewContentModeScaleAspectFit bounds:newSize interpolationQuality:kCGInterpolationHigh];

    NSTextAttachment *textAttachment = [NSTextAttachment new];
    textAttachment.image = image;
    textAttachment.bounds = CGRectMake(0,-5, image.size.width, image.size.height);
    NSAttributedString *attributedString = [NSAttributedString attributedStringWithAttachment:textAttachment];

    [mutableAttString insertAttributedString:attributedString atIndex:(self.textView.text.length)];

    self.textView.attributedText = mutableAttString;

我不喜欢这个解决方案,因为图像没有在屏幕上居中,如果我可以在横向旋转和横向旋转时再次调整图像比例,那就太好了。目前,它的大小始终相同。我不想使用这个类别。 :)

我想到的另一种方法是根本不将图像添加到 textView,而是找到一些方法根据内容动态调整 textView 的高度,然后添加一个 UIImageViewtextView 下方并使用自动布局使其水平居中。这不是最灵活的解决方案,但这是我的布局 - 文本段落下方有图像,没有其他内容,所以我愿意这样做。

我只是想知道,Apple 是如何为 Mail 做到这一点的?你有什么建议?

enter image description here

最佳答案

1.您可以使用属性字符串将附件保留在 TextView 中。插入后只需设置附件的框架即可。

或者 2. 您可以使用包含图像和文本的动态单元格的表格 View ,并根据单元格内容设置它们的高度。

关于ios - 如何像邮件一样在 UITextView 中显示图像并使其居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23822912/

相关文章:

iOS 本地通知和 APN : what can I use it for?

ios - 为什么我不能访问函数内部的 ViewController 变量 (Swift3)?

ios - UIActivityViewController 在导航栏上显示电子邮件模态视图 Controller

ios - 使用自动布局动态更改 subview 后调整 super View 的大小

ios - UIImage 如何使用 capInsets 调整气泡图像的大小?

iphone - 在 UIImageView 中旋转图像

适用于 armv7、armv7s、arm64 的 iOS 开源构建

ios - 如何将 UISlider 添加到 AVPlayer

html - 从本地存储在 Xcode 中的 htm 文件中提取原始 html 字符串

ios - 如何为不同的屏幕尺寸设置不同的自动布局约束