亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將文本垂直對齊到UILabel中的頂部

將文本垂直對齊到UILabel中的頂部

iOS
慕仙森 2019-06-12 14:49:14
將文本垂直對齊到UILabel中的頂部我有一個UILabel有兩行文字的空格。有時,當文本太短時,此文本將顯示在標簽的垂直中心。如何垂直對齊文本,使其始終位于UILabel?
查看完整描述

3 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

  1. 設置新的文本:

    myLabel.text = @"Some Text"
  2. 設置maximum number為0行(自動):

    myLabel.numberOfLines = 0
  3. 將標簽的框架設置為最大大?。?/trans>

    myLabel.frame = CGRectMake(20,20,200,800)
  4. 打電話sizeToFit以縮小幀大小,使內容只適合:

    [myLabel sizeToFit]

標簽框架現在已經足夠高,足夠寬,適合你的文字。左上角應保持不變。我只測試了這與左上角對齊的文本。對于其他對齊,您可能需要修改后的框架。

另外,我的標簽已經啟用了單詞包裝。


查看完整回答
反對 回復 2019-06-12
?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

參考擴展解決方案:

for(int i=1; i< newLinesToPad; i++) 
    self.text = [self.text stringByAppendingString:@"\n"];

應改為

for(int i=0; i<newLinesToPad; i++)
    self.text = [self.text stringByAppendingString:@"\n "];

在每增加的換行符中都需要額外的空間,因為iPhoneUILabels后面的回車似乎被忽略了:

類似地,對齊Bottom也應該使用@" \n@%"代替"\n@%"(對于周期初始化,必須替換為“for(int i=0.”)。)。

以下分機適用于我:

// -- file: UILabel+VerticalAlign.h#pragma mark VerticalAlign@interface UILabel (VerticalAlign)- (void)alignTop;
- (void)alignBottom;@end// -- file: UILabel+VerticalAlign.m@implementation UILabel (VerticalAlign)- (void)alignTop {
    CGSize fontSize = [self.text sizeWithFont:self.font];
    double finalHeight = fontSize.height * self.numberOfLines;
    double finalWidth = self.frame.size.width;    //expected width of label
    CGSize theStringSize = [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(finalWidth, finalHeight) 
    lineBreakMode:self.lineBreakMode];
    int newLinesToPad = (finalHeight  - theStringSize.height) / fontSize.height;
    for(int i=0; i<newLinesToPad; i++)
        self.text = [self.text stringByAppendingString:@"\n "];}- (void)alignBottom {
    CGSize fontSize = [self.text sizeWithFont:self.font];
    double finalHeight = fontSize.height * self.numberOfLines;
    double finalWidth = self.frame.size.width;    //expected width of label
    CGSize theStringSize = [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(finalWidth, finalHeight)
     lineBreakMode:self.lineBreakMode];
    int newLinesToPad = (finalHeight  - theStringSize.height) / fontSize.height;
    for(int i=0; i<newLinesToPad; i++)
        self.text = [NSString stringWithFormat:@" \n%@",self.text];}@end

然后打電話[yourLabel alignTop];[yourLabel alignBottom];每次你的標簽文字作業之后。


查看完整回答
反對 回復 2019-06-12
  • 3 回答
  • 0 關注
  • 792 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號