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

首頁 > 系統(tǒng) > iOS > 正文

iOS開發(fā)實戰(zhàn)之Label全方位對齊的輕松實現(xiàn)

2019-10-21 18:39:32
字體:
來源:轉載
供稿:網(wǎng)友

前言

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

ARUILabelTextAlign

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

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

iOS開發(fā),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/** * 根據(jù)對齊方式進行文本對齊 * * @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開發(fā),Label,全方位對齊

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

總結

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


注:相關教程知識閱讀請移步到IOS開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
久久久99精品视频| 中文字幕无码毛片免费看| 邪恶网站在线观看| 日本特黄a级高清免费大片| 亚洲女爱视频在线| 日本不卡一区二区在线观看| 亚洲成人天堂| 国产乱真实合集| 亚洲一区在线观看视频| 日韩精品亚洲精品| 亚洲精品aa| 欧美插天视频在线播放| 成人在线免费观看网址| 国产亚洲一区二区三区啪| 国产精品久久久久久久app| 日韩一级片在线免费观看| 国产麻豆精品一区二区三区v视界| 国产成人在线观看免费网站| 果冻天美麻豆一区二区国产| 亚洲精品久久久成人| 国产麻豆精品一区二区| 人妻无码中文字幕免费视频蜜桃| 国精产品乱码一区一区三区四区| 香蕉久久视频| 末成年女av片一区二区下载| 欧美国产一区二区三区| 免费av网站在线看| 色偷偷久久一区二区三区| 一区二区三区视频免费观看| 国产三级视频在线| 中文字幕av一区二区三区高| 色综合天天狠天天透天天伊人| 欧美日韩一级黄| 亚洲国产精品小视频| 亚洲精品欧美一区二区三区| 男人午夜免费视频| 性欧美videossex精品| 日本视频一二区| 秋霞午夜av一区二区三区| 午夜欧美福利视频| 红杏成人性视频免费看| 亚洲精品国产熟女久久久| 久久久久久久久亚洲| 久久精品中文字幕电影| av观看成片免费网站| 国产精品香蕉一区二区三区| 九九热在线精品视频| 国产精久久久| 五月天婷婷社区| 五月天婷婷综合| 久久免费精品国产| 欧美黑人性视频| 一级免费视频| 日韩一区二区视频在线观看| 成人黄色av免费在线观看| 国产婷婷成人久久av免费高清| 亚洲国产精品久久人人爱| www.成人.com| 日本精品久久中文字幕佐佐木| 高清中文字幕mv的电影| 欧美中文在线免费| 国产乱女淫av麻豆国产| 国产91综合网| 成人免费视频毛片| 久久精品网站视频| 亚洲熟女乱色一区二区三区| 欧美3p视频在线观看| 无码国产69精品久久久久网站| 国产黄色片在线| 国产三区在线视频| 国产一二三区在线观看| 国产欧美一区二区精品久导航| 久久精品人人做人人综合| 夜先锋av资源| 在线观看中文字幕不卡| 日日夜夜国产| 亚洲日本va| 精品午夜一区二区三区| 欧美久久精品一级c片| 影音国产精品| 深田咏美中文字幕| 日韩欧美视频一区二区| 99热精品久久| 4kfree性满足欧美hd18| 久久久综合精品| 国模娜娜一区二区三区| 福利一区二区三区四区| 人妻体体内射精一区二区| 免费在线观看黄| 激情小说激情视频| 国产精品国产三级国产aⅴ入口| 成人高清免费观看mv| 亚洲免费网址| 国产又黄又爽又无遮挡| 色婷婷久久99综合精品jk白丝| 亚洲精品国产精品国自产观看浪潮| 九九精品在线视频| 国产欧美一区二区三区在线看蜜臂| 日韩熟女精品一区二区三区| 蜜桃免费在线视频| 精品国产欧美日韩一区二区三区| 日本少妇高潮喷水xxxxxxx| 成人福利网站在线观看| 久久99国产精品| jizz在线观看视频| 三级网站在线免费观看| 日本亚洲欧美成人| 高清精品一区二区三区一区| 五十路在线观看| 亚洲国产成人一区二区三区| 午夜亚洲性色福利视频| 真实国产乱子伦对白在线| 欧美黑人ⅹxxx另类猛交| 韩国v欧美v日本v亚洲| 一个色综合网站| 久久亚洲精品中文字幕蜜潮电影| 女同互忝互慰dv毛片观看| 97影院在线观看| 国产一区不卡在线观看| 亚洲日本国产精品| 成人网av.com/| 99精品小视频| 热三久草你在线| 99精品在免费线偷拍| 国产三级精品三级观看| 91免费精品国自产拍在线不卡| 亚洲一区中文字幕在线| 久热这里只精品99re8久| 青青青草原在线| 国产精品一区二区久久精品爱涩| 国产伦精品一区二区三区四区| yourporn在线观看视频| 狠狠色噜噜狠狠狠8888米奇| 4438x亚洲最大成人网| 日本一级在线观看| 狠狠鲁狠狠操| 国精产品99永久一区一区| 二区中文字幕| 蜜桃av噜噜一区二区三区| 国产精品不卡一区二区三区| 国产伦视频一区二区三区| 久久久久久久久久影院| 精品黄色免费中文电影在线播放| 一区二区电影免费观看| 国产精品无码久久av| 国产日产欧美一区二区三区| 亚洲视频电影| 亚州av一区| 色综合久久综合网97色综合| 久久精品人人做人人综合| 美女高潮在线观看| 国产成人精品aa毛片| 性欧美lx╳lx╳| 日韩一级片免费在线观看| 精品亚洲夜色av98在线观看| 欧美lavv| 我和岳m愉情xxxⅹ视频| 在线播放黄色网址| 最近日韩免费视频| 99re在线视频观看| 超级碰碰视频| 97色婷婷成人综合在线观看| 国产在线观看一区二区三区| 免费播放片a高清在线观看| 欧美成人三级在线观看| 香蕉视频成人在线| 91插插视频| 大肉大捧一进一出好爽| 久久riav二区三区| 国产永久免费观看| 毛片中文在线观看| 色婷婷av一区二区三区在线观看| 黑人乱码一区二区三区av| 亚洲欧洲日本专区| 日韩精品中文字幕有码专区| 亚洲国产成人va在线观看麻豆| 久久夜精品va视频免费观看| 精品国产18久久久久久| 99在线欧洲视频| 久久精品99久久香蕉国产色戒| 日韩中文字幕a| 中文字幕在线视频网站| 亚洲综合色站| 黄色激情在线观看| 亚洲free性xxxx护士白浆| 99精品热6080yy久久| 91成人理论电影| 激情五月综合婷婷| 亚洲午夜18毛片在线看| 这里只有精品在线播放| 久久精品亚洲一区二区三区浴池| 久久mv成人精品亚洲动漫| 国产欧美久久久精品影院| 久草热视频在线观看| 男人晚上看的视频| 中文字幕第八页| 成人午夜在线视频| 精品久久久三级| 久久久一区二区三区捆绑**| 久久中文精品| 三级黄色免费观看| 精品久久国产一区| 成人动漫视频在线观看完整版| 成人综合婷婷国产精品久久蜜臀| 日产国产精品精品a∨| 色大18成网站www在线观看| 精品国产福利视频| 欧美天天综合色影久久精品| 精品区一区二区| 国产成人精品无码播放| 久久99精品久久久野外观看| 国产成人高清精品免费5388| www.亚洲一区二区三区| 阿v视频在线| 国产美女直播视频一区| 亚洲欧美精品一区二区| 日韩精品免费电影| 欧美一级免费视频| 一区二区成人国产精品| 欧美精品一区二区性色a+v| 色综合天天在线| 亚洲国产精品一| 欧美激情成人| 欧美在线观看一区| 欧美做爰爽爽爽爽爽爽| 91精品在线视频观看| 日韩成人精品视频| 欧美性巨大欧美| 精品少妇一区二区三区免费观看| 性亚洲最疯狂xxxx高清| 宅男深夜免费观看视频| 国产专区在线播放| 精品一区二区在线播放| 嫩草影院入口一二三免费| 国产精品毛片a∨一区二区三区|国| 国产91色在线观看| 麻豆传传媒久久久爱| 国产综合在线播放| 九一精品在线观看| 国产成人一区在线| 国产丝袜精品视频| 青青草中文字幕| 在线观看视频一区二区欧美日韩| 91精品国产777在线观看| 欧美极品少妇xxxxⅹ免费视频| 一区二区精品区| 隔壁人妻偷人bd中字| www.精品av.com| 日本在线视频网| 亚洲色图另类图片| 黑人巨大精品欧美| 国产又粗又大又长| 日本欧美色综合网站免费| 一级毛片免费高清中文字幕久久网| 91大神福利视频在线| 日韩国产在线看| 俺去啦最新官网| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 久久久国产精品久久久| 日韩一级视频在线观看| 国产福利不卡| 五月天激情国产综合婷婷婷| 四虎成人精品在永久在线观看| 五月婷婷六月丁香激情| 小说区图片区综合久久88| 丝袜美女在线观看| www亚洲精品| 一区二区三区视频免费在线观看| 猛性xxxxx| 91在线成人| 在线免费观看av网站| 国产亚洲精品美女久久久久| 日韩三区在线观看| 国产香蕉一区二区三区| 性做久久久久久久| 国产成人精品福利一区二区三区| 99久久综合网| 久久嫩草捆绑紧缚| 成人国产网站| 伊人色综合久久天天| 国产精品无码久久av| 欧美极品少妇与黑人| 久久精品国产av一区二区三区| 日本羞羞视频| 97色成人综合网站| 动漫av在线免费观看| 欧美丰满熟妇xxxxx| 中文写幕一区二区三区免费观成熟| www.久久久久久.com| 欧美激情电影| 日韩男人天堂| 91久久精品一区二区别| 青青草原网站在线观看| 日本免费久久| 亚洲美女尤物影院| 欧美性受xxxx黒人xyx性爽| 九色91蝌蚪| 中文字幕在线免费| www.91av...| 激情五月五月婷婷| 全网国产福利在线播放| 视色,视色影院,视色影库,视色网| 一级片免费在线播放| 先锋影音资源999| 久久精品色妇熟妇丰满人妻| 国产亚洲精品久久久久久777| 中文字幕在线视频不卡| 你懂的网址视频| 一区二区三区免费在线| 日本一区二区三区视频在线| 成人影院在线观看视频| 欧美一区二区三区久久精品| 欧美片第1页综合| 羞羞网站在线看| 国产一区二区三区网| 夜色激情一区二区| 欧美日本高清一区| av中文在线资源库| 日韩欧美国产中文字幕| 日韩av电影免费在线观看| 国产精品午夜电影| 成人av资源在线观看| 精品久久国产老人久久综合| 国产一区视频在线看| 丁香花在线电影小说观看| 亚洲第一大网站| 国产18精品乱码免费看| www.5588.com毛片|