文字小包の実現
1578 ワード
「文字小包」の実装(何ですか?「文字列」全体がどれだけ大きいか、labelがどれだけ大きいか)フォントのサイズ(文字のサイズ、文字列全体の幅と高さに直接影響する )を設定します.文字が実際に占有する幅と高さ を取得する.特定のlabelに を割り当てる
注意:戻り高さは1行の高さです.
// - :17, :
NSDictionary *nameAttr = @{NSFontAttributeName:[UIFont systemFontOfSize:17]};
// ' '
CGSize nameSize = [self.status.name sizeWithAttributes:nameAttr];
CGFloat nameW = ceil(nameSize.width);
CGFloat nameH = ceil(nameSize.height);
// label frame
self.nameLabel.frame = CGRectMake(nameX, nameY, nameW, nameH);
:
, :12 , :Helvetica(Neue)
sizeWithAttributes:
? NSString .
- (CGSize)sizeWithAttributes:(NSDictionary *)attrs;
? , .( )
NSAttributedString
? .@interface NSAttributedString : NSObject
? , ( : , , )
NSAttributedStringKey
? NSAttributedString (Constants)
typedef NSString *NSAttributedStringKey;
? (NSAttributedString) (Key).
, Key .
NSFontAttributeName
? 'NSAttributedStringKey' . (UIFont)
Value UIFont .
注意:
sizeWithAttributes
メソッドNSString str =@"abcd
efg";
//真ん中に
を入れて改行する.CGSize tempSize = [str sizeWithAttributes: @{NSFontAttributeName:[UIFont systemFontOfSize:17]} ];
tempSize @"abcd" .
, @"abcdefg"