Bagaimana Anda mengembalikan teks multiline CGSize dari metode iOS 7 baru sizeWithAttributes?
Saya ingin ini menghasilkan hasil yang sama dengan sizeWithFont: constrainedToSize.
NSString *text = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eu urna quis lacus imperdiet scelerisque a nec neque. Mauris eget feugiat augue, vitae porttitor mi. Curabitur vitae sollicitudin augue. Donec id sapien eros. Proin consequat tellus in vehicula sagittis. Morbi sed felis a nibh hendrerit hendrerit. Lorem ipsum dolor sit."
CGSize textSize = [text sizeWithAttributes:@{ NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Light" size:16.0] }];
Metode ini hanya menghasilkan ketinggian untuk satu baris teks.
objective-c
ios7
lebih baik
sumber
sumber
Jawaban:
baik Anda dapat mencoba ini:
sumber
@{...}
. Disebut apakah itu?sizeWithFont:constrainedToSize:
metode asli yang sudah usang. Apple pasti sangat membenci kita. Bagaimanapun, +1.MAXFLOAT
bukanCGFLOAT_MAX
?var size = textToMeasure.boundingRectWithSize( CGSizeMake(width, CGFloat.max), options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes:attrs, context:nil).size
Beginilah cara saya melakukannya:
sumber
Swift 2.3:
Swift 4:
sumber
Inilah metode saya untuk menangani kedua situasi, masuk dalam
NSString
kategori.sumber
Untuk Xamarin.iOS:
sumber
Jika Anda memiliki teks, font, numberOfLines, dan lebar set label Anda, metode ini mengembalikan ukuran label Anda:
sumber
Sebagai alternatif, jika Anda melihatnya
UITextView
, Anda selalu dapat menggunakanNSLayoutManager
metode ini:Anda juga dapat menemukan ketinggian garis untuk font tertentu dengan:
sumber
[Sebagai pengguna baru, saya tidak bisa memposting komentar ke jawaban @ testing, tetapi untuk membuat jawabannya (untuk xamarin.ios) lebih bermanfaat]
Kami dapat mengembalikan CGRect dan hanya menggunakan parameter tinggi untuk item gui yang kami targetkan UIButton dll. Melewati semua parameter yang kami butuhkan seperti di bawah ini
sumber
gunakan
ceilf
metode untuk mengelola dengan benarsumber