请选择 进入手机版 | 继续访问电脑版
源码天堂 设为首页 收藏本站
开启辅助访问 切换到宽版

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

切换风格 立即注册 找回密码

IOS教程网

新浪微博达人勋

2579

积分

338

金钱

1

广播

Rank: 6Rank: 6

积分
2579

社区QQ达人最佳新人活跃会员热心会员推广达人

发表于 2017-10-31 16:21:56 | 显示全部楼层 |阅读模式
分享到:
遇到了个需求,需要在使用AutoLayout中,按钮文字数量不确定的情况下对按钮高度做相应的适配,使用了很多网上的办法都不太可行。
但是这个博客给我一些办法:http://www.cnblogs.com/xiaobai51/p/5557988.html

按照该作者的实现方式,我也做出了相应的调整。
示例代码如下:
  1. - (void)viewDidLoad {
  2.     [super viewDidLoad];
  3.    
  4.    //  动态创建多个button
  5.     for (int i = 0; i < 5; i++) {
  6.         
  7.         UIButton *button = [[UIButton alloc] init];
  8.      //  禁用AutoResizing
  9.         button.translatesAutoresizingMaskIntoConstraints = NO;
  10.         [button setTitle:@"有很多字有很多字有很多字有很多字" forState:UIControlStateNormal];
  11.         
  12.      //  边框和颜色
  13.         button.layer.borderWidth = 1;
  14.         button.titleLabel.numberOfLines = 0;
  15.         button.layer.borderColor = [[UIColor blueColor] CGColor];
  16.         [button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
  17.         
  18. //        [button setTitleEdgeInsets:UIEdgeInsetsMake(20, 20, 20, 20)]
  19.       //  换行方式
  20.         [button.titleLabel setLineBreakMode:NSLineBreakByWordWrapping];
  21.         
  22.         [self.view addSubview:button];
  23.      //  文字居中
  24.         button.titleLabel.textAlignment = NSTextAlignmentCenter;
  25.      //  按钮内的Label文字约束
  26.         [button.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  27.             make.edges.equalTo(button).insets(UIEdgeInsetsMake(10, 10, 10, 10));
  28. //            make.bottom.equalTo(button.mas_bottom).offset(10);
  29.         }];
  30.         //  按钮自身约束
  31.         [button mas_makeConstraints:^(MASConstraintMaker *make) {
  32.             make.top.equalTo(self.view.mas_top);
  33.             make.width.equalTo(self.view.mas_width).multipliedBy((float)1/5);
  34.             if (i == 0) {
  35.                 make.left.equalTo(self.view.mas_left);
  36.             }else{
  37.                 make.left.equalTo([[self.view.subviews objectAtIndex:i - 1] mas_right]);
  38.             }
  39.         }];

  40.         //  视图在AutoLayout下,如需获取frame需要使用一下语句或重载viewDidLayoutSubview
  41.         [button layoutIfNeeded];
  42.         
  43.         NSLog(@"w: %f, h: %f", [self.buttons[0] titleLabel].bounds.size.width, [self.buttons[0] titleLabel].bounds.size.height);
  44.         NSLog(@"w: %f, h: %f", [self.buttons[0] bounds].size.width, [self.buttons[0] bounds].size.height);
  45.     }
  46. }
复制代码
最后图片:
1268470-20171030154916465-23112704.jpg


新浪微博达人勋

410

积分

0

金钱

0

广播

Rank: 3Rank: 3

积分
410
发表于 2017-10-31 16:22:11 | 显示全部楼层
IOS教程网真强大

新浪微博达人勋

336

积分

0

金钱

0

广播

Rank: 3Rank: 3

积分
336
发表于 2017-11-13 16:09:20 | 显示全部楼层
鄙视楼下的顶帖没我快,哈哈

新浪微博达人勋

434

积分

0

金钱

0

广播

Rank: 3Rank: 3

积分
434
发表于 2017-11-16 02:56:23 | 显示全部楼层
看起来不错

新浪微博达人勋

1320

积分

0

金钱

0

广播

Rank: 6Rank: 6

积分
1320
发表于 2017-11-22 18:01:00 | 显示全部楼层
小白一个 顶一下

新浪微博达人勋

456

积分

3

金钱

0

广播

Rank: 3Rank: 3

积分
456
发表于 2017-11-26 15:51:12 | 显示全部楼层
看起来好像不错的样子

新浪微博达人勋

1451

积分

5

金钱

0

广播

Rank: 6Rank: 6

积分
1451
发表于 2017-12-13 08:09:38 | 显示全部楼层
无论是不是沙发都得回复下

新浪微博达人勋

346

积分

0

金钱

0

广播

Rank: 3Rank: 3

积分
346
发表于 2018-1-3 04:52:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

新浪微博达人勋

2574

积分

314

金钱

0

广播

Rank: 6Rank: 6

积分
2574

社区QQ达人最佳新人活跃会员热心会员推广达人

发表于 2018-1-24 17:41:31 | 显示全部楼层
支持,赞一个

新浪微博达人勋

1344

积分

6

金钱

0

广播

Rank: 6Rank: 6

积分
1344
发表于 2018-1-31 17:42:49 | 显示全部楼层
大人,此事必有蹊跷!
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

小黑屋|手机版|Archiver|IOS教程网. ( 粤ICP备12089784号  

GMT+8, 2018-10-17 04:38 , Processed in 0.250445 second(s), 47 queries .

Powered by Discuz X3.1

© 2001-2013 IOS教程网

快速回复 返回顶部 返回列表