1. 程式人生 > >iOS 7.0之後的UILabel左上,右下顯示

iOS 7.0之後的UILabel左上,右下顯示

出自:http://blog.csdn.net/braver_smile/article/details/42966427

有的時候可能會用到這樣的佈局效果,label固定尺寸,但是text可能略小,這個時候系統提供的方法只能垂直居中,靠左,靠右,水平居中。但是都在垂直方向上,可能滿足不了我們的要求。這裡提出了一種方法,當然還有其他的方法,例如用drawInRect重繪。

貼出示例程式碼如下:

#import "ViewController.h"

#import "UILabel+VerticalAlign.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

    [superviewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    UILabel *label = [[UILabelalloc] initWithFrame:CGRectMake(50,200, 200, 200)];

    [label setText:@"hello"];

    [label setTextColor:[UIColorblackColor]];

    [label setBackgroundColor:[UIColorgreenColor]];

    [label alignTop];

    [self.viewaddSubview:label];

}

#import "UILabel+VerticalAlign.h"

@implementation UILabel (VerticalAlign)

-(void)alignTop

{

    CGSize fontSize;

    NSDictionary *attribute [email protected]{NSFontAttributeName:self.font};

    fontSize = [self.textboundingRectWithSize:self.frame.sizeoptions:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attributecontext:nil].size;

    fontSize.height = fontSize.height+1;

    self.numberOfLines =self.frame.size.height / fontSize.height;

    NSLog(@"%ld", (long)self.numberOfLines);

    double finalHeight = fontSize.height *self.numberOfLines;

    CGSize theStringSize =fontSize;

    int newLines=(finalHeight - theStringSize.height)/ fontSize.height;

    for(int i=0; i<newLines; i++)

        self.text =[self.textstringByAppendingString:@"\n "];

}

-(void)alignBottom

{

    CGSize fontSize;

    NSDictionary *attribute [email protected]{NSFontAttributeName:self.font};

    fontSize = [self.textboundingRectWithSize:self.frame.sizeoptions:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attributecontext:nil].size;

    fontSize.height = fontSize.height+1;

    self.numberOfLines =self.frame.size.height / fontSize.height;

    double finalHeight = fontSize.height *self.numberOfLines;

    CGSize theStringSize =fontSize;

    int newLinesToPad =(finalHeight - theStringSize.height)/ fontSize.height;

    for(int i=0; i<newLinesToPad; i++)

        self.text =[NSStringstringWithFormat:@" \n%@",self.text];

}

@end


相關推薦

iOS 7.0之後UILabel左上右下顯示

出自:http://blog.csdn.net/braver_smile/article/details/42966427 有的時候可能會用到這樣的佈局效果,label固定尺寸,但是text可能略小,這個時候系統提供的方法只能垂直居中,靠左,靠右,水平居中。但是都在垂直方

iOS 11.0之後UIScrollView頂部空20畫素

最近在做一個專案,執行在iOS11.0的模擬器上時候,發現UIScrollView頂部預留出20畫素像是電池欄,雖然佈局的時候frame.y=0,但還是空出20畫素: 解決方法 1.佈局的時候,f

Docker 基於 php:7.0-apache 搭建 TPShop 安裝 freetype/GD/mysqli 等擴充套件

下載原始碼 http://www.tp-shop.cn/download/ 下載 解壓至主機資料夾:/var/www/tpshop docker 構建 php:7.0-apache 容器 docker run -d -p 8886:80 --nam

Centos 7.0下執行yum返回bash: yum: 未找到命令..

解決: -bash: yum: 未找到命令 最近在弄伺服器,使用yum安裝ftp不成功,沒找到可安裝軟體,百度了下,不小心在CentOS7系統下把yum命令給刪除了,於是百度了好幾篇文章,最後按照這篇文章的辦法,成功解決了問題。 步驟如下 第一步: http://mirrors.163.

為什麼應用程式在Android 7.0之後安裝和執行都變得更快?

需要了解幾個概念 Dalvik 虛擬機器 負責解釋dex檔案為機器碼,每次執行程式碼,都需要Dalvik將dex程式碼翻譯為微處理器指令,然後交給系統處理,這樣效率不高。 JIT(Just-In-Time) 為了解決上面的問題,Google在2

Nacos v0.7.0:對接CMDB實現基於標籤的服務發現能力

Nacos近期釋出了0.7.0版本,該版本支援對接第三方CMDB獲取CMDB資料、使用Selector機制來配置服務的路由型別、支援單機模式使用MySQL資料庫、上線Node.js客戶端,並修復了一些bug。 對接CMDB實現就近訪問 在服務進行多機房或者多地域部署時,跨地域的服務訪問往往延遲較高,一個城

PrimeNG 7.0.4 正式釋出強大的 Angular UI 元件庫

   PrimeNG 7.0.4 已釋出,PrimeNG 是一個極為完善的開源 Angular UI 元件庫,原生小部件豐富,內建 80 多個易於使用的元件,可滿足所有 UI 需求。 具體更新內容如下: 新特性和改進: Make DomHand

android 7.0之後安裝apk

android 7.0行為變更中系統許可權的更改裡面提到: 傳遞軟體包網域外的 file:// URI 可能給接收器留下無法訪問的路徑。因此,嘗試傳遞 file:// URI 會觸發 FileUriE

安卓 5.0 之後啟動服務必須是顯式的startService()。安卓不能啟動服務

1.當按照正規啟動不了服務的時候,可以試試以下方法: Intent intent = new Intent("com.gnss.GNSSService"); intent.setAction(GPSBOARDCONTROL);//Service能夠匹配的Action

Android 7.0使用相機拍照出現FileUriExposedException異常

以前寫的相機模組功能,在7.0手機上遇到錯誤,記錄一下。Android 7.0以下 呼叫方式Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File file = new File(Environmen

iOS 7.0.4 和 7.1 上計算文字高度有誤差的解決方法

   最近寫專案計算文字高度那裡在 7.0.4 和 7.1 上遇見 文字高度 有誤差的問題,一般寫我就直接用系統提供的方法,計算高度,如下: //得到文字的高度 +(NSValue*)getStringWithRect:(NSString*)aString

iOS 採用@available(iOS 11.0, *)適配 iOS11會引起呼叫系統相簿時系統介面上移問題

      我們在使用以下方法適配 iOS11,避免滾動檢視頂部出現20的空白以及push或者pop的時候頁面有一個上移或者下移的異常動畫的問題時,會導致一個問題,就是當我們的應用呼叫系統相簿時,引起系統相簿介面整體上移。原因是因為:全域性設定瞭如下的方法。 if (@a

安卓 7.0之後 呼叫系統相機崩潰

解決方案: 1、(推薦)7.0之後你的app就算有許可權,給出一個URI之後手機也認為你沒有許可權。不用修改原有程式碼,在Application的oncreate方法中: if (Build.VER

電腦win7開機之後黑屏顯示滑鼠如何顯示桌面

1、首先按Ctrl+Alt+Delete鍵,點選‘啟動工作管理員’; 2、點選‘檔案’->‘新建執行任務’,輸入:control 進入控制面板選項,或者輸入:control userpass

ArcGIS for iOS地圖上新增測距功能顯示相應的路徑圖層

近段時間因為專案需求,所以需要再arcgis上邊通過在地圖上進行點選,之後把各個點選點按順序連線起來,同時將兩點之間的距離給計算出來並顯示。故此編寫本部落格具體分為以下幾個步驟1、新增地圖並顯示到檢視中(次步省略掉)2、在地圖上新增AGSGraphicsLayer和AGSSk

PMD 5.7.0 發布Java 程序代碼檢查工具

使用 beats odi 每日 代碼 amp 抓取 變量 更多 PMD 5.7.0 發布了。PMD 是一款采用 BSD 協議發布的 Java 程序代碼檢查工具。該工具可以做到檢查 Java 代碼中是否含有未使用的變量、是否含有空的抓取塊、是否含有不必要的對象等。該軟件功能強

灰犀牛之2017年8月21日四川九寨溝發生7.0級地震

log 四川 image 技術分享 現在 cnblogs logs 記錄 2008年 北京時間8月8日21時19分46秒,四川阿壩藏族羌族自治州九寨溝縣(北緯33.20度,東經103.82度)發生7.0級地震,震源深度20千米,此後又發生多次余震。四川、甘肅、青海、寧夏、陜

Ubuntu 16.04升級4.7.0內核後導致Compiz奔潰問題:compiz[4852]: segfault at 48 ip 00007f88cae087f0 sp 00007ffce354c268 error 4 in libscale.so

conf bsp alt get onf 桌面 支持 png style 由於硬件的驅動支持問題,升級4.7.0的內核主要是為了能使用Intel HD Graphics 630驅動,但是也出現了相關問題,比如Compiz的特效導致桌面上如果有多個相同程序啟動,然後再次點擊時

續:糾正:ubuntu【7.04】可以安裝而且完美的安裝 ! for《Oracle-10.2.0.1打補丁10.2.0.5:在 debian 版本4【不含4】以上及 ubuntu 7.04【不含7.04】以上都可以安裝!》

etc ubun oracl poweroff ++ ldconfig red aio edi n次的測試後,最終證明,如下做法,可以完美安裝。 中間都不帶任何一個錯誤的!!!完美! dhclient vi /etc/profile ll cd /e