iOS 修改UILabel內容間距

2021-08-08 01:59:21 字數 1969 閱讀 6262

uilabel根據內容計算高度,設定上下左右的間距

/// 1,給label設定要顯示的字型,

self.label.text = @"你這個方法是在多個字型的時候又效果,如果說label很大,字型的個數很少,你這個設定的方法是在label的中心靠左邊顯示的,沒有達到左上角顯示字型的效果,我當時是用了label的自適應來寫的,不知道你們還有有好的方法,希望可以討論一下~,字型的個數很少,你這個設定的方法是在label的中心靠左邊顯示的,沒有達到左上角顯示字型的效果,我當時是用了label的自適應來寫的,不知道你們還有有好的方法,希望可以討論一下~";

/// 2, 給乙個固定的寬度

self.label.frame = cgrectmake(10 , 10, kscreenw-40, 0);

/// 3, 通過寬度和字型算出高度

cgsize size = [self.label sizethatfits:cgsizemake(kscreenw-40, 0)];

/// 4, 設定label的frame

self.label.frame = cgrectmake(10, 10, size.width, size.height);

設定self.label.yf_contentinsets = uiedgeinsetsmake(10, 10, 10, 10);效果如下

不設定,如下

uilabel新增分類後可以直接呼叫上述方法

.h 檔案

#import @inte***ce uilabel (yfadd)

/** 修改label內容距 `top` `left` `bottom` `right` 邊距

*/@property (nonatomic, assign) uiedgeinsets yf_contentinsets;

@end

.m檔案

#import "uilabel+yfadd.h"

#import /// 獲取uiedgeinsets在水平方向上的值

cg_inline cgfloat

uiedgeinsetsgethorizontalvalue(uiedgeinsets insets)

/// 獲取uiedgeinsets在垂直方向上的值

cg_inline cgfloat

uiedgeinsetsgetverticalvalue(uiedgeinsets insets)

cg_inline void

replacemethod(class _class, sel _originselector, sel _newselector) else

}@implementation uilabel (yfadd)

+ (void)load );

}- (void)yf_drawtextinrect:(cgrect)rect

- (cgsize)yf_sizethatfits:(cgsize)size

const void *kassociatedyf_contentinsets;

- (void)setyf_contentinsets:(uiedgeinsets)yf_contentinsets

- (uiedgeinsets)yf_contentinsets

iOS開發 UILabel根據內容自動調整高度

寫法一 物件方法,傳入 字型 最大尺寸.即可得到寬高,最大尺寸主要限制寬度,如果是一行就給個 如果是多行就限制x值,y值隨便給 cgsize sizewithfont uifont font maxsize cgsize maxsize return self boundingrectwithsiz...

ios控制項 UILabel

uilabel 的作用是顯示文字 uilabel label uilabel alloc initwithframe cgrectmake 100,100,100,40 label.text 代佳巨集 建立文字的內容 nil label.textcolor uicolor redcolor 設定文字...

IOS控制項學習之UILabel

ios的uilabel我個人覺得很弱智,居然只有橫向設定而沒有豎向設定文字位置,這讓我很糾結。先看效果 1.新建專案 2.編輯 viewcontroller.m檔案 void viewdidload 3.自定義uilabelex 控制項 1 uilabelex.h import 定義乙個列舉型別,頂...