亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS開發實戰之Label全方位對齊的輕松實現

2019-10-21 18:39:32
字體:
來源:轉載
供稿:網友

前言

本文主要給大家介紹了關于iOS Label全方位對齊的實現方法,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧

ARUILabelTextAlign

1. 實現 UILabel文本在 左(上 中 下)、中(上 中 下)、右(上 中 下) 9個方位顯示;

2. 提供富文本底部不對齊的解決方案;

iOS開發,Label,全方位對齊

演示

核心代碼:

ARAlignLabel.h

#import <UIKit/UIKit.h>@class ARMaker;typedef NS_ENUM(NSUInteger, textAlignType){ textAlignType_top = 10, // 頂部對齊 textAlignType_left,  // 左邊對齊 textAlignType_bottom,  // 底部對齊 textAlignType_right,  // 右邊對齊 textAlignType_center  // 水平/垂直對齊(默認中心對齊)};@interface ARAlignLabel : UILabel/** * 根據對齊方式進行文本對齊 * * @param alignType 對齊block */- (void)textAlign:(void(^)(ARMaker *make))alignType;@end//工具類@interface ARMaker : NSObject/* 存放對齊樣式 */@property(nonatomic, strong) NSMutableArray *typeArray;/** * 添加對齊樣式 */- (ARMaker *(^)(textAlignType type))addAlignType;@end

ARAlignLabel.m

#import "ARAlignLabel.h"@interface ARAlignLabel ()/* 對齊方式 */@property(nonatomic, strong) NSArray *typeArray;//上@property(nonatomic, assign) BOOL hasTop;//左@property(nonatomic, assign) BOOL hasLeft;//下@property(nonatomic, assign) BOOL hasBottom;//右@property(nonatomic, assign) BOOL hasRight;@end@implementation ARAlignLabel- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines { CGRect textRect = [super textRectForBounds:bounds limitedToNumberOfLines:numberOfLines]; if (self.typeArray){  for (int i=0; i<self.typeArray.count; i++) {   textAlignType type = [self.typeArray[i] integerValue];   switch (type) {    case textAlignType_top: //頂部對齊     self.hasTop = YES;     textRect.origin.y = bounds.origin.y;     break;    case textAlignType_left: //左部對齊     self.hasLeft = YES;     textRect.origin.x = bounds.origin.x;     break;    case textAlignType_bottom: //底部對齊     self.hasBottom = YES;     textRect.origin.y = bounds.size.height - textRect.size.height;     break;    case textAlignType_right: //右部對齊     self.hasRight = YES;     textRect.origin.x = bounds.size.width - textRect.size.width;     break;    case textAlignType_center:     if (self.hasTop) { //上中      textRect.origin.x = (bounds.size.width - textRect.size.width)*0.5;     }     else if (self.hasLeft) { //左中      textRect.origin.y = (bounds.size.height - textRect.size.height)*0.5;     }     else if (self.hasBottom) { //下中      textRect.origin.x = (bounds.size.width - textRect.size.width)*0.5;     }     else if (self.hasRight) { //右中      textRect.origin.y = (bounds.size.height - textRect.size.height)*0.5;     }     else{ //上下左右居中      textRect.origin.x = (bounds.size.width - textRect.size.width)*0.5;      textRect.origin.y = (bounds.size.height - textRect.size.height)*0.5;     }     break;    default:     break;   }  } } return textRect;}- (void)drawTextInRect:(CGRect)requestedRect { CGRect actualRect = requestedRect; if (self.typeArray) {  actualRect = [self textRectForBounds:requestedRect limitedToNumberOfLines:self.numberOfLines]; } [super drawTextInRect:actualRect];}- (void)textAlign:(void(^)(ARMaker *make))alignType { ARMaker *make = [[ARMaker alloc]init]; alignType(make); self.typeArray = make.typeArray;}@end//工具類@implementation ARMaker- (instancetype)init { self = [super init]; if (self) {  self.typeArray = [NSMutableArray array]; } return self;}- (ARMaker *(^)(enum textAlignType type))addAlignType { __weak typeof (self) weakSelf = self; return ^(enum textAlignType type) {  [weakSelf.typeArray addObject:@(type)];  return weakSelf; };}@end

工具使用 - 九個方位對齊

- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor];  if (_index == 9) {  //富文本底部對齊  [self attributedTextAgainOfBottom]; }else {  ARAlignLabel *label = [[ARAlignLabel alloc] initWithFrame:CGRectMake(kScreenWidth/2.0 - 150, 300, 300, 80)];  label.backgroundColor = [UIColor orangeColor];  label.textColor = [UIColor blackColor];  label.font = [UIFont systemFontOfSize:18];  label.text = @"愛學習,愛編程,愛咖啡可樂";  label.numberOfLines = 1;  [self.view addSubview:label];    switch (_index) {   case 0:    [label textAlign:^(ARMaker *make) {     make.addAlignType(textAlignType_left).addAlignType(textAlignType_top);    }];    break;   case 1:    [label textAlign:^(ARMaker *make) {     make.addAlignType(textAlignType_left).addAlignType(textAlignType_center);    }];    break;   case 2:    [label textAlign:^(ARMaker *make) {     make.addAlignType(textAlignType_left).addAlignType(textAlignType_bottom);    }];    break;   case 3:    [label textAlign:^(ARMaker *make) {     make.addAlignType(textAlignType_center).addAlignType(textAlignType_top);    }];    break;   case 4:    [label textAlign:^(ARMaker *make) {     make.addAlignType(textAlignType_center);    }];    break;   case 5:    [label textAlign:^(ARMaker *make) {     make.addAlignType(textAlignType_center).addAlignType(textAlignType_bottom);    }];    break;   case 6:    [label textAlign:^(ARMaker *make) {     make.addAlignType(textAlignType_right).addAlignType(textAlignType_top);    }];    break;   case 7:    [label textAlign:^(ARMaker *make) {     make.addAlignType(textAlignType_right).addAlignType(textAlignType_center);    }];    break;   case 8:    [label textAlign:^(ARMaker *make) {     make.addAlignType(textAlignType_right).addAlignType(textAlignType_bottom);    }];    break;   default:    break;  } }}

富文本底部對齊

//富文本底部對齊- (void)attributedTextAgainOfBottom {  CGFloat space = 10.0;  ARAlignLabel *leftLB = [[ARAlignLabel alloc] initWithFrame:CGRectMake(20, 200, kScreenWidth/2.0 - 20 - space/2.0, 80)]; leftLB.backgroundColor = [UIColor lightGrayColor]; leftLB.textColor = [UIColor blackColor]; leftLB.numberOfLines = 1; [self.view addSubview:leftLB]; //右下 [leftLB textAlign:^(ARMaker *make) {  make.addAlignType(textAlignType_center); }];  NSMutableAttributedString *attributedArr = [[NSMutableAttributedString alloc] initWithString:@"單價 $123"]; [attributedArr setAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:40], NSForegroundColorAttributeName:[UIColor blackColor]} range:NSMakeRange(0, 1)]; [attributedArr setAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:25], NSForegroundColorAttributeName:[UIColor blackColor]} range:NSMakeRange(1, 1)]; [attributedArr setAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:20], NSForegroundColorAttributeName:[UIColor blueColor]} range:NSMakeRange(3, 1)]; [attributedArr setAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:35], NSForegroundColorAttributeName:[UIColor redColor]} range:NSMakeRange(4, attributedArr.length - 4)];  leftLB.attributedText = attributedArr;   //對齊之后 ARAlignLabel *rightLB = [[ARAlignLabel alloc] initWithFrame:CGRectMake(kScreenWidth/2.0 + space/2.0, 200, leftLB.frame.size.width, 80)]; rightLB.backgroundColor = [UIColor lightGrayColor]; rightLB.textColor = [UIColor blackColor]; rightLB.numberOfLines = 1; [self.view addSubview:rightLB]; //左下 [rightLB textAlign:^(ARMaker *make) {  make.addAlignType(textAlignType_center); }];  //設置部分文字的偏移量 (0是讓文字保持原來的位置, 負值是讓文字下移,正值是讓文字上移) [attributedArr addAttribute:NSBaselineOffsetAttributeName value:@(1) range:NSMakeRange(0, 1)]; [attributedArr addAttribute:NSBaselineOffsetAttributeName value:@(0) range:NSMakeRange(1, 1)]; [attributedArr addAttribute:NSBaselineOffsetAttributeName value:@(-2) range:NSMakeRange(3, 1)]; [attributedArr addAttribute:NSBaselineOffsetAttributeName value:@(-3) range:NSMakeRange(4, attributedArr.length - 4)];  rightLB.attributedText = attributedArr; }

富文本底部對齊 - 使用場景:

iOS開發,Label,全方位對齊

Github:https://github.com/ArchLL/ARUILabelTextAlign

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人免费播放| 91精品国产网站| 国内精品久久久久影院优| 裸体女人亚洲精品一区| 亚洲春色另类小说| 欧美日韩国产一中文字不卡| 综合久久五月天| 久久99久久亚洲国产| 国产精品视频自拍| 一区三区二区视频| 国产91精品久| 久久伊人精品一区二区三区| 日韩av大片免费看| 日韩中文在线中文网在线观看| 国产亚洲精品久久| 最新69国产成人精品视频免费| 性欧美亚洲xxxx乳在线观看| 精品视频在线播放色网色视频| 亚洲区中文字幕| 亚洲一区美女视频在线观看免费| 久久夜色精品国产| 2021国产精品视频| 欧美在线激情视频| 日韩欧美中文字幕在线播放| 欧美日韩美女在线观看| 久久99精品国产99久久6尤物| 一区国产精品视频| 国产女精品视频网站免费| 国产精品盗摄久久久| 91社区国产高清| 欧美猛男性生活免费| 亚洲欧美中文在线视频| 国产精品96久久久久久| 91日本在线视频| 亚洲人成网站色ww在线| www.日韩av.com| 日韩欧美福利视频| 国产精品美乳在线观看| 亚洲大胆人体av| 欧美日韩国产专区| 91久久久久久久| 成人免费自拍视频| 亚洲男子天堂网| 欧美交受高潮1| 国产aⅴ夜夜欢一区二区三区| 亚洲另类xxxx| 午夜剧场成人观在线视频免费观看| 久久久久久久97| 国产日韩中文字幕| 亚洲最大成人在线| 久久久久久69| 日韩激情在线视频| 日韩av影院在线观看| 中文字幕久久精品| 中文字幕综合在线| 亚洲xxxxx| 国产精品男人的天堂| 夜夜狂射影院欧美极品| 日韩在线免费av| 亚洲嫩模很污视频| 免费不卡在线观看av| 国产精品视频久久| 孩xxxx性bbbb欧美| 亚洲欧美综合精品久久成人| 国产视频在线观看一区二区| 国产裸体写真av一区二区| 亚洲国产免费av| 亚洲天堂第一页| 欧美激情网友自拍| 91精品国产自产在线观看永久| 国内精品久久久久久| 在线观看视频亚洲| 久久国产精品久久久久| 国产精品ⅴa在线观看h| 久久久久久成人| 亚洲国产欧美精品| 亚洲激情国产精品| 日av在线播放中文不卡| 欧美黄色免费网站| 国产91在线播放精品91| 欧美激情视频给我| 久久韩国免费视频| 久久久成人精品视频| 最近2019中文免费高清视频观看www99| 国内精品中文字幕| 精品久久久久久亚洲国产300| 国产精品吊钟奶在线| 成人午夜激情网| 色樱桃影院亚洲精品影院| 亚洲字幕一区二区| 欧美性一区二区三区| 性欧美在线看片a免费观看| 欧美老女人性视频| 日韩欧美一区二区在线| 日本精品性网站在线观看| 国产精品免费一区二区三区都可以| 国产精品三级在线| 欧美成人免费全部观看天天性色| 国产日韩欧美一二三区| 欧美视频中文在线看| 777777777亚洲妇女| 91精品视频在线播放| 欧美一性一乱一交一视频| 国产99久久精品一区二区永久免费| 88xx成人精品| 亚洲精品www久久久久久广东| 在线免费观看羞羞视频一区二区| 国产精品美女呻吟| 一色桃子一区二区| 亚洲黄一区二区| 国产精品高潮呻吟久久av野狼| 国产在线拍揄自揄视频不卡99| 国产精品久久久久久久久借妻| 国产小视频91| 国产精品96久久久久久| 国产欧美精品va在线观看| 国产视频福利一区| 国产日韩欧美在线视频观看| 91wwwcom在线观看| 国产综合视频在线观看| 亚洲va久久久噜噜噜久久天堂| 综合av色偷偷网| 久久久精品美女| 欧美激情一二区| 亚洲日韩第一页| 国产精品色午夜在线观看| 91精品视频在线看| 国产成人午夜视频网址| 在线观看中文字幕亚洲| 色视频www在线播放国产成人| 中文字幕精品一区二区精品| 97久久久久久| 国产精品草莓在线免费观看| 亚洲美女精品久久| 精品福利在线观看| 国产成人一区二区三区电影| 精品女厕一区二区三区| 国产日韩换脸av一区在线观看| 成人黄色激情网| 亚洲最大激情中文字幕| 国产美女直播视频一区| www.久久色.com| 亚洲第一区中文99精品| 日韩久久精品成人| 久久久久久97| 国产在线一区二区三区| 亚洲电影成人av99爱色| 亚洲精品乱码久久久久久按摩观| 国内精品一区二区三区四区| 91国内在线视频| 麻豆精品精华液| 欧美影院成年免费版| 在线观看欧美视频| 久久综合伊人77777| 久久免费视频这里只有精品| 欧美日韩精品中文字幕| 欧美激情手机在线视频| 911国产网站尤物在线观看| 91探花福利精品国产自产在线| 久久视频国产精品免费视频在线| 九九热这里只有在线精品视| 精品国产一区久久久| 国产视频999| 亚洲欧美制服丝袜|