首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Objective C中动态设置UILabel的自动布局宽度和高度

在Objective C中,可以使用Auto Layout来动态设置UILabel的自动布局宽度和高度。Auto Layout是一种用于定义视图之间关系的布局系统,它可以根据约束条件自动计算和调整视图的位置和大小。

要动态设置UILabel的自动布局宽度和高度,可以按照以下步骤进行操作:

  1. 创建UILabel对象,并设置其文本内容。
代码语言:txt
复制
UILabel *label = [[UILabel alloc] init];
label.text = @"Hello, World!";
  1. 禁用UILabel的AutoresizingMask属性,以便手动设置布局约束。
代码语言:txt
复制
label.translatesAutoresizingMaskIntoConstraints = NO;
  1. 添加UILabel的约束条件,包括宽度和高度的约束。
代码语言:txt
复制
// 设置宽度约束
NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:label attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:200];
[label addConstraint:widthConstraint];

// 设置高度约束
NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:label attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:50];
[label addConstraint:heightConstraint];
  1. 添加UILabel到父视图,并设置其约束条件。
代码语言:txt
复制
UIView *superview = self.view; // 父视图
[superview addSubview:label];

// 设置水平居中约束
NSLayoutConstraint *centerXConstraint = [NSLayoutConstraint constraintWithItem:label attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:superview attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0];
[superview addConstraint:centerXConstraint];

// 设置垂直居中约束
NSLayoutConstraint *centerYConstraint = [NSLayoutConstraint constraintWithItem:label attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:superview attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0];
[superview addConstraint:centerYConstraint];

通过以上步骤,我们成功地动态设置了UILabel的自动布局宽度和高度。在这个例子中,我们设置了UILabel的宽度为200,高度为50,并将其水平和垂直居中于父视图中。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MyLayout&TangramKit 重大升级!

AutoLayout尺寸自适应 AutoLayout中有两种类型尺寸自适应:一类是以UILabelUITextView为代表视图尺寸自适应,这类视图中宽度高度有时候需要根据自身内容来确定自己宽度高度...当一个视图有自己固有内容尺寸时,就不需要再为视图设置宽度或者高度约束。这也就是为什么一般情况下不对UILabel视图设置宽度高度约束时系统也能正常完成布局。...系统内部实现如果布局引擎在布局时发现某个视图没有设置高度或者宽度约束那么就会去调用这个视图intrinsicContentSize方法,如果这个方法返回了正常尺寸则视图就按这个尺寸来进行渲染展示...MyLayout&TangramKit尺寸自适应 MyLayout&TangramKit一个重要能力是支持布局视图尺寸自适应自动计算,也就是说布局视图宽度或者高度可以根据子视图尺寸来自行确定...因此如果想使用布局视图尺寸自适应功能,那么在将布局视图尺寸设置为wrap后,就可以像使用UILabel那样不用去设置布局视图宽度约束高度约束了。比如有两个兄弟视图A,B。

2K20

iOS-屏幕适配实现(AutoLayout)

比如,给xib某个子控件A设置宽度高度、距离父控件上下左右之间间距,就相当于给这个控件添加了6个约束,也就产生了6个约束对象 约束错误警告 红色箭头,代表约束错误,一般是缺少约束或约束冲突(例如...如果用autolayout给UILabel设置约束,只需要设置x、y、width,无需设置height,UILabel自动包裹内容,并且随内容多小而变化。...如果我们通过约束给定了UILabelwidth = 100,但是内容仍然少可怜,不能包裹,可以把宽度设置为<=100,此时,label宽高都能包裹住内容。高度设置同理可证。...原因在于,UILabel是根据内容自动调整宽度高度,如果没有内容,那么宽度高度就是0,导致UILabel无法显示。...默认为当前设置方向最近一个VIew,且没有覆盖遮挡视图 注意:上下左右间距控件宽度高度配合使用,尽量不要冲突; 例如:375屏幕宽度,你不能距离左边200,距离右边200,还要控件宽度100

31210

iOS自动布局框架之Masonry

Masonry是同时支持MaciOS两个平台,在这两个平台上都可以使用Masonry进行自动布局。...在项目中设置AutoLayout约束,起到对视图布局标记作用。设置好约束之后,程序运行过程创建视图时,会根据设置约束计算frame,并渲染到视图上。...Cell高度 在iOS UI开发过程,UITableView动态Cell高度一直都是个问题。...实现这样需求,实现方式有很多种,只是实现起来复杂程度性能区别。在不考虑性能情况下,tableView动态Cell高度,可以采取估算高度方式。...需要设置tableViewrowHeight属性,这里设置自动高度,告诉系统Cell高度是不固定,需要系统帮我们进行计算。

1.1K60

iOS界面布局之三——纯代码autoLayout及布局动画

iOS界面布局之三——纯代码autoLayout及布局动画 一、引言         关于界面布局,apple策略已经趋于成熟,autolayout优势在开发也已经展现淋漓尽致。...除了使用storyBoard进行布局约束拖拽,有时我们也需要在代码中进行autolayout布局设置,Masonry库可以方便创建约束属性,实际上,我们也没有必要再使用系统原生代码来创建和设置约束...创建NSLayoutConstraint对象方法有两种,下面我们分别介绍: 1、使用Objective-C风格方法创建约束对象         所谓Objective-C风格方法,就是通过原生枚举一些属性设置来创建...,例如,过我要设置view1上边距离父视图上边一定间距,这个view2就是view1父视图,如果我要设置view1与另一个视图一定距离,这个view2就是另一个视图。...代表是水平布局还是垂直布局,H代表水平,V表示垂直,|表示父视图边沿,-20-表示距离20px,[]内是要布局摆放视图对象名,()是约束尺寸,H下则为宽度,V下则为高度,@后面的数字代表优先级

2.8K30

iOS自动布局框架之Masonry

Masonry是同时支持MaciOS两个平台,在这两个平台上都可以使用Masonry进行自动布局。...在项目中设置AutoLayout约束,起到对视图布局标记作用。设置好约束之后,程序运行过程创建视图时,会根据设置约束计算frame,并渲染到视图上。...Cell高度 在iOS UI开发过程,UITableView动态Cell高度一直都是个问题。...实现这样需求,实现方式有很多种,只是实现起来复杂程度性能区别。在不考虑性能情况下,tableView动态Cell高度,可以采取估算高度方式。...需要设置tableViewrowHeight属性,这里设置自动高度,告诉系统Cell高度是不固定,需要系统帮我们进行计算。

1.9K50

Autolayout

Autolayout Autolayout是一种“自动布局”技术,专门用来布局UI界面的 Autolayout自iOS6开始引入,由于Xcode4不给力,当时并没有得到很大推广自iOS7(Xcode5...缺乏必要约束, 比如 只约束了宽度高度, 没有约束具体位置 两个约束冲突, 比如 1个约束控件宽度为100, 1个约束控件宽度为110 代码实现Autolayout 代码实现Autolayout...有Autolayout之后,UILabelbounds默认会自动包住所有的文字内容,顶部底部不再会有空缺区域 ?...UILabel实现包裹内容 设置宽度约束为 <= 固定值 设置位置约束 不用去设置高度约束 基于Autolayout动画 在修改了约束之后,只要执行下面代码,就能做动画效果 [UIView animateWithDuration...make.width.equalTo(blueView.mas_width);//蓝色view宽度相等 }]; 制作九宫格样式视图布局 填充一个View控件到父控件

90760

开源UI界面布局框架MyLayout1.9发布

设想一个场景:某个视图宽度在竖屏下是屏幕宽度一半,而在横屏下则是屏幕高度一半。换句话说就是视图宽度是屏幕宽度高度最小值一半。 ?...比如下面的例子: //A视图宽度是B视图宽度C视图高度,100这三个值最小一个 A.widthSize.equalTo(@[B.widthSize, C.heightSize, @100]...举例来说:假如一个横向水平线性布局宽度是120,里面的三个子视图A,B,C宽度间距分别为:A左间距20,A宽度30, B左间距10,B宽度60, C左间距20,C宽度40。...B宽度 = 50 - 50 *(2/5.0) = 30 C左间距 = 20 - 50 *(1/5.0) = 10 C宽度 = 40 不会被压缩 最终界面展示效果如下: 位置尺寸压缩后界面...10.完善扩充视图尺寸自适应设置支持 所谓尺寸自适应就是视图尺寸根据自身内容视图内子视图尺寸来动态确定自身尺寸,从而形成所谓包裹效果。

1.7K10

深入详解iOS适配技术

把tableView设置为此属性,那么无论viewControllerview是多大,都能自动铺满 ?...控制器viewautoresizing 注意:如果我们在storyBoard中选中控制器view,然后在尺寸检查器查看会发现,autoresizing控制子控件宽度高度虚线自动变成了实线...比如,给某个子控件A设置了左边距右边距后,虽然没有明确指定子控件A宽度,但是其左右边距一旦设置,那么宽度可以根据子控件A父控件左右之间边距自动推算出来。...如果用autolayout给UILabel设置约束,只需要设置x、y、width,无需设置height,UILabel自动包裹内容,并且随内容多小而变化。...原因在于,UILabel是根据内容自动调整宽度高度,如果没有内容,那么宽度高度就是0,导致UILabel无法显示。

8.4K70

swift下autolayout实现笔记

首先是正常创建元素,为了熟悉实现方式,我在学习过程是完全放弃storyboard。...(false) //设置在约束布局系统是否把自动布局转换为约束布局 self.view.addSubview(v1) 然后添加约束 self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat...enum里面选取 metrics:nil;一般为nil ,参数类型为NSDictionary,从外部传入 views:就是上面所加入到NSDictionary绑定元素 表达式规则 |: 表示父视图...-: 表示距离 >= :表示视图间距、宽度高度必须大于或等于某个值 <= :表示视图间距、宽度高度必须小宇或等于某个值 == :表示视图间距、宽度或者高度必须等于某个值 比如我们要把上面创建...,他们布局保持不变。

83980

30天从零接手ios开发

由于公司原因,唯一会ios伙伴要离开了,临时要接手ios开发任务,只有30天交接时间,记录下这个过程 一开始,给自己定步骤是这样 学习objective-c语言(书本:objective-c应用开发全程实录...,不考虑视频,因为视频资料学习起来多花时间,不适合,目的是为了快速接手工作,学习重点如下: 学习OC、学习UI绘制、学习各种事件响应,学习数据加载传递、学习动态自适应UI objective-c学习...对照着官方组件文档,熟悉界面布局方法功能 这个设置页,使用了UITableView,要熟悉这个view匹配UITableViewDataSource这个delegate11个回调方法,UITableViewDelegate...,当一个不可见,另外一个更新新布局位置,而不适用动态约束布局自动适应(对这个布局写法不熟悉),时间赶,所以先妥协实现了;这种类似妥协地方也会有一些,只能待后续慢慢优化 后续遗漏问题 一个就是对现有的项目的代码框架做进一步熟悉....m.h两个文件,比如page.hpage.m,.h是做声明,对外部其他类可见,包括变量方法,.m是具体实现方法,也包括定义内部变量方法 控件宽高在布局代码写完后,居然可以直接拿到 UILabel

23840

iOS layout相关方法

drawRect调用是在Controller->loadView, Controller->viewDidLoad 两方法之后掉用.所以不用担心在控制器,这些ViewdrawRect就开始画了.这样可以在控制器设置一些值给...然后系统自动调用drawRect:方法。 3、通过设置contentMode属性值为UIViewContentModeRedraw。那么将在每次设置或更改frame时候自动调用drawRect:。...可以被手动直接调用 sizeToFitsizeThatFits方法都没有递归,对subviews也不负责,只负责自己 假设 let label = UILabel(frame: CGRectMake(...)"); label.sizeToFit(); print("实际宽度:\(label.frame.size.width) 实际高度:\(label.frame.size.height)"); 打印结果为...宽度:120.0 高度:24.0 实际宽度:50.0 实际高度:50.0 实际宽度:120.0 实际高度:24.0 有上面的例子可以看出 sizeThatFits 返回“最佳”大小以适应给定大小

1K10

【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

Files : 支持库, 一般保存 不是 Objective-C 源代码 资源文件; Supporting Files 目录简介 :  -- HelloWorld-info.plist 文件...; -- 自动链接 : 框架库一旦被添加到该目录后, 会自动链接到应用, IOS 应用可以调用这些资源 函数; -- 系统默认框架 : Foundation.framework,...Size : 设置最小字号大小, 设置值是字体大小; -- Tighten Letter Spacing : 勾选该复选框 会自动压缩字符串空白, 保证 UILabel 能容纳这些文本内容...通过 IBOutlet 连接获取控件 (1) IBoutlet 属性 IBOutlet 属性 :  -- 主要作用 : IBOutlet 属性可以连接 Objective - C 源码 界面设计文件...UIView; -- 创建自定义类 : 选择菜单 File -> New File -> Cocoa Touch -> Objective-C Class; -- OCFollowTouchView.h

4.8K30

Cell 动态行高文字显示不全问题探索

问题概述 使用是”预估行高+自动布局方法实现动态行高(适用于 iOS7.0 以后系统)。...,为了使文本可以多行显示,需要保证如下设置设置 label numberoflines 为 0 对 label 进行上左下右完整约束 在项目实现过程,遇到了文本内容被截断最后一行一小部分,无法完全显示问题...在 cell 显示之前,setFrame 生效,此时,cell 在之前预估行高基础上,根据约束重新布局,舍弃了内容 label 高度约束,导致内容显示不全。...当我们把底部约束优先级降低到 Low 时,cell 在之前预估行高基础上,根据约束重新布局,舍弃就是低优先级底部约束了,因此才能看到低优先级底部约束开始生效,后来因 setFrame 减小了高度...其他解决思路 当然,为了实现行分割线效果,我们也可以在自定义 cell 底部手动添加一个 UIView 子视图,高度设置为 cell 间隔高度,颜色改为与 UITableview 背景色一致(与 cell

2.2K00

(转)iOS开发之UICollectionViewController系列(三) :UICollectionView自定义瀑布流

ContentSizeWidth就是屏幕宽度,而ContentSize高度是一列中最后一个CellY坐标加上其自身高度最大值。在此函数中会调用求CellY数组最大值。...(2)Cell高度计算:通过随机数生成高度 (3)CellX轴坐标计算:通过列数,Padding,以及每个Cell宽度很容易就可以计算出每个CellX坐标。...每个Cell宽度间隔确定了,那么每个CellX轴坐标也就确定了。...代码如下: Objective-C /** * 根据Cell列数求出Cell宽度 */ - (void) initCellWidth{ //计算每个Cell宽度...具体代码如下: Objective-C /** * 随机生成Cell高度 */ - (void) initCellHeight{ //随机生成Cell高度

5.9K40

Cell 动态行高文字显示不全问题探索

问题概述 使用是”预估行高+自动布局方法实现动态行高(适用于 iOS7.0 以后系统)。...,为了使文本可以多行显示,需要保证如下设置设置 label numberoflines 为 0 对 label 进行上左下右完整约束 在项目实现过程,遇到了文本内容被截断最后一行一小部分,无法完全显示问题...在 cell 显示之前,setFrame 生效,此时,cell 在之前预估行高基础上,根据约束重新布局,舍弃了内容 label 高度约束,导致内容显示不全。...当我们把底部约束优先级降低到 Low 时,cell 在之前预估行高基础上,根据约束重新布局,舍弃就是低优先级底部约束了,因此才能看到低优先级底部约束开始生效,后来因 setFrame 减小了高度...其他解决思路 当然,为了实现行分割线效果,我们也可以在自定义 cell 底部手动添加一个 UIView 子视图,高度设置为 cell 间隔高度,颜色改为与 UITableview 背景色一致(与 cell

1.9K20

OC获取一串字符串高度宽度确定)或宽度高度确定)

https://blog.csdn.net/u010105969/article/details/52937475 项目中我们有时会需要根据字符串来确定UILabel宽度高度,如我们经常遇到单元格自适应问题...如果是要动态知道UILabel高度,那么我们直接利用单元格自适应高度就可以。如果我们要获取UILabel宽度(为什么要获取UILabel宽度?...因为有时如果字符串过长那么UILabel宽度就会相应发生变化),那么就可以利用下面的方法: CGSize size = [string sizeWithFont:font constrainedToSize...:CGSizeMake(MAXFLOAT, 17)];  CGFloat w =size.width; 其实这个方法只是先获取字符串(字符串字体大小是确定了size再确定其宽度。...从方法可以看出我们固定了字符串高度为17,如果想要获取字符串高度,那么固定宽度就好了。

2.4K30
领券