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的特效導致桌面上如果有多個相同程序啟動,然後再次點擊時
面試題3:在一個長度為n的數組裏的所有數字都在0到n-1的範圍內。 數組中某些數字是重復的,但不知道有幾個數字是重復的。也不知道每個數字重復幾次。請找出數組中任意一個重復的數字。 例如,如果輸入長度為7的數組{2,3,1,0,2,5,3},那麽對應的輸出是第一個重復的數字2。
length value 如果 while 返回 sys public ret || package siweifasan_6_5; /** * @Description:在一個長度為n的數組裏的所有數字都在0到n-1的範圍內。 * 數組中某些數字是重復的,
續:糾正: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