Çekirdek Metin ile işlenen metin için NSRange
'ten nasıl CGRect
alabilirim?Çekirdek Metin - NSRange'den Pixel Koordinatları Alın
Çekirdek Metni NSAttributedString
ile kullanıyorum.
Çekirdek Metin ile işlenen metin için NSRange
'ten nasıl CGRect
alabilirim?Çekirdek Metin - NSRange'den Pixel Koordinatları Alın
Çekirdek Metni NSAttributedString
ile kullanıyorum.
Bu mutlak bir acıdır, ancak yapılabilir.
Onların karakter aralığı, CTLineGetStringRange()
kullanarak aradığınız aralığında ise, hat kendisi kadar kılacak kadar büyük bulmak için CTLineGetTypographicBounds()
kullanmak, çek CTFrameGetLines()
kullanarak çerçevedeki çizgilerin tüm almak gerekir ve kullanımı Aralığın başlangıç / bitiş karakterinin gerçek konumunu belirlemek için CTLineGetOffsetForStringIndex()
(eğer çizgi sadece istenen aralığın bir alt dizisidir).
Tüm bunları bir araya getirip, ofsetleri ve yükseklikleri ekleyerek istediğiniz gibi alabilirsiniz. CTLineGetImageBounds()
'un grafik bağlamı olmadan çalıştığını unutmayın (ve topladığımdan, zaten oldukça pahalıdır) ve bu sorunu çözmek için gerekli değildir.
ilk aralık sen yalan ilgilenen olan hat (lar) belirler. Ardından, satırın başlangıcından belirli bir dize konumunun bir ofsetini almak için CTLineGetOffsetForStringIndex()
'u arayın. CTLineGetImageBounds()
ile birlikte, aralığınızdaki ilk ve son karakterlerin bir CGPoint
konumunu hesaplamak mümkün olmalıdır.
Detaylı bir cevap, çok teşekkürler! Böyle şeyler için gerekli olan tüm fonksiyonları bulmak her zaman bir acıdır. :) – Joshua
@Joshua bu cevabı uygularken ur kodunu paylaşabilir mi? Biraz problemim olduğunu ve 3 haftaya kadar çözemediğimi düşünüyorum, lütfen bana yardım edin ... –
@Risma Bunu uygulamak için aslında hiç bir şeyim olmadı ama ihtiyacın olan her şey Sean'ın cevabında. – Joshua