Di iOS 7, caranya:
- (CGSize)sizeWithFont:(UIFont *)font
constrainedToSize:(CGSize)size
lineBreakMode:(NSLineBreakMode)lineBreakMode
dan metodenya:
- (CGSize)sizeWithFont:(UIFont *)font
sudah usang. Bagaimana saya bisa mengganti
CGSize size = [string sizeWithFont:font
constrainedToSize:constrainSize
lineBreakMode:NSLineBreakByWordWrapping];
dan:
CGSize size = [string sizeWithFont:font];
-sizeWithAttributes:
.Jawaban:
Anda bisa mencoba ini:
Cukup ubah "FONT" untuk "[font UIFont ....]"
sumber
NSLineBreakByWordWrapping
akan masuk dalam aNSParagraphStyle
. Jadi misalnya:NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
Dalam atribut Anda perlu menambahkanNSParagraphStyleAttributeName: paragraphStyle.copy
...boundingRectWithSize:options:attributes:context:
mengembalikan nilai fraksional. Yang perlu Anda lakukanceil(textRect.size.height)
danceil(textRect.size.width)
masing - masing untuk mendapatkan tinggi / lebar sebenarnya.Karena kita tidak dapat menggunakan sizeWithAttributes untuk semua iOS yang lebih besar dari 4.3, kita harus menulis kode kondisional untuk 7.0 dan iOS sebelumnya.
1) Solusi 1:
2) Solusi 2
Solusi pertama adalah kadang gagal mengembalikan nilai ketinggian yang tepat. jadi gunakan solusi lain. yang akan bekerja dengan sempurna.
Opsi kedua cukup baik dan bekerja dengan lancar di semua iOS tanpa kode kondisional.
sumber
Inilah solusi sederhana:
Persyaratan :
Sekarang Karena
constrainedToSizeusage:lineBreakMode:
penggunaan sudah tidak digunakan lagi di iOS 7.0 :Sekarang penggunaan dalam versi yang lebih besar dari iOS 7.0 adalah:
sumber
Di bawah ini adalah dua metode sederhana yang akan menggantikan dua metode usang ini.
Dan berikut ini adalah referensi yang relevan:
Jika Anda menggunakan NSLineBreakByWordWrapping, Anda tidak perlu menentukan NSParagraphStyle, karena itu adalah default: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSParagraphStyle_Class/index. html # // apple_ref / occ / clm / NSParagraphStyle / defaultParagraphStyle
Anda harus mendapatkan langit-langit ukuran, agar sesuai dengan hasil metode yang sudah usang. https://developer.apple.com/library/ios/documentation/UIKit/Reference/NSString_UIKit_Additions/#//apple_ref/occ/instm/NSString/boundingRectWithSize:options:attributes : context :
sumber
Dalam kebanyakan kasus saya menggunakan metode sizeWithFont: constrainedToSize: lineBreakMode: untuk memperkirakan ukuran minimum untuk sebuah UILabel untuk mengakomodasi teksnya (terutama ketika label harus ditempatkan di dalam UITableViewCell) ...
... Jika ini persis situasi Anda, Anda dapat menggunakan metode ini:
Semoga ini bisa membantu.
sumber
sumber
[Jawaban yang diterima berfungsi dengan baik dalam suatu kategori. Saya menimpa nama metode yang sudah usang. Apakah ini ide yang bagus? Tampaknya berfungsi tanpa keluhan di Xcode 6.x]
Ini berfungsi jika Target Penempatan Anda adalah 7,0 atau lebih besar. Kategori adalah
NSString (Util)
NSString + Util.h
NSString + Util.m
sumber
dari dua jawaban 1 + 2
sumber