Saya mencoba untuk mendapatkan efek berikut menggunakan UITextView:
Pada dasarnya saya ingin menyisipkan gambar di antara teks. Gambar hanya dapat menempati 1 baris ruang sehingga tidak perlu pembungkusan.
Saya mencoba menambahkan UIView ke subview:
UIView *pictureView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 25, 25)];
[pictureView setBackgroundColor:[UIColor redColor]];
[self.textView addSubview:pictureView];
Tapi sepertinya itu mengapung di atas teks dan menutupinya.
Saya membaca sedikit di jalur pengecualian yang tampaknya menjadi salah satu cara untuk menerapkan ini. Namun, saya tidak ingin benar-benar memposisikan gambar - sebaliknya, itu harus mengalir dengan teks (mirip dengan bagaimana <span>
berperilaku dalam HTML).
Jawaban:
Anda harus menggunakan string yang diatribusikan dan menambahkan gambar sebagai contoh
NSTextAttachment
:sumber
replaceCharactersInRange
Kode @ bilobatum diubah menjadi Swift bagi yang membutuhkan:
sumber
Anda dapat mencoba menggunakan NSAttributedString dan NSTextAttachment. Lihatlah tautan berikut untuk detail lebih lanjut tentang menyesuaikan NSTextAttachment untuk mengubah ukuran gambar. http://ossh.com.au/design-and-technology/software-development/implementing-rich-text-with-images-on-os-x-and-ios/
Dalam contoh saya, saya mengubah ukuran gambar agar sesuai dengan lebarnya, dalam kasus Anda, Anda mungkin ingin mengubah ukuran gambar agar sesuai dengan tinggi garis.
sumber
UIView
menjadiUIImage
dan kemudian menambahkannya sebagaiNSTextAttachment
. Untuk merender tampilan menjadi gambar, periksa pertanyaan ini: http://stackoverflow.com/questions/4334233/how-to-capture-uiview-to-uiimage-without-loss-of-quality-on-retina- tampilan? lq = 1Memperluas jawaban @ bilobatum , dan menggunakan kategori ini dari pertanyaan lain. Saya memasak ini:
Pemakaian:
Penerapan:
.
sumber
UIFont *fontForRange = [attributesForRange valueForKey:NSFontAttributeName];
untukUIFont *fontForRange = [attributesForRange valueForKey:NSFontAttributeName] ?: [UIFont fontWithName:@"HelveticaNeue" size:12.0];
harus lebih baik, karena [attributesForRange valueForKey: NSFontAttributeName] mungkin nihil jika itu tidak diatur dalam kamusSolusi masalah dalam contoh sederhana adalah
sumber