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

为什么使用addSubview:自动布局添加了一个大小不正确的子视图?

使用addSubview:方法添加子视图时,可能会出现大小不正确的情况,原因可能有以下几种:

  1. 约束冲突:在使用自动布局时,子视图的约束可能与父视图或其他视图的约束发生冲突,导致子视图的大小不正确。解决方法是检查约束设置,确保没有冲突的约束存在。
  2. 错误的布局属性:在添加子视图时,可能设置了错误的布局属性,例如错误的宽度、高度、边距等。解决方法是仔细检查布局属性的设置,确保正确地描述了子视图的大小和位置。
  3. 视图层级关系:在添加子视图时,可能没有正确地设置视图的层级关系,导致子视图被其他视图遮挡或布局不正确。解决方法是使用bringSubviewToFront:方法将子视图置于最前面,或者使用sendSubviewToBack:方法将子视图置于最后面。
  4. 布局更新问题:在添加子视图后,可能没有及时更新布局,导致子视图的大小不正确。解决方法是调用父视图的layoutIfNeeded方法或者手动触发布局更新,确保子视图的大小正确计算和显示。

总结起来,使用addSubview:自动布局添加子视图出现大小不正确的问题,可能是由于约束冲突、错误的布局属性、视图层级关系或布局更新问题所致。解决方法是检查约束设置、布局属性、视图层级关系,并及时更新布局。

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

相关·内容

  • iOS 面试策略之系统框架-UIScrollView及其子类

    [1240] 当一个屏幕无法展示 App 需要展示所有内容时,就是 UIScrollView 大展拳脚时候:通过使用 UIScrollView,用户可以滑动或是缩放屏幕,来看单个屏幕无法展示内容。...contentSize 是指 contentView 大小。它一般超过屏幕大小,是整个 UIScrollView 实际内容大小。...下图是 Cells、Supplementary Views、Decoration Views 说明: [image] 优化进阶 7.UITableViewCell如何根据其内容自动设置其布局?...auto layout #UITableViewAutomaticDimension #estimatedRowHeight 主要有以下三步: 用auto layout对UITableViewCell中所有视图位置和大小进行定义...如果你正在跳槽或者正准备跳槽不妨动动小手,添加一下咱们交流群931 542 608来获取一份详细大厂面试资料为你跳槽多一份保障。 第一个问题。

    2.6K21

    【IOS开发基础系列】Autolayout自动布局专题

    很明显一个是自己为原点坐标系,一个是以屏幕为原点坐标系。         当谈到自动布局,橙色代表坏。InterfaceBuilder绘制两个橙色方块:一个是虚线边框,一个是实线边框。...虚线方块是根据自动布局显示视图frame。实线方块是根据你在屏幕上放置视图frame。这两个应该吻合,但是这里并没有。 Note:你可能会奇怪,为什么Xcode不为X轴方向自动增加一个约束。...: v2];    //添加两个允许自动布局视图 //设置视图宽度和父视图宽度相同 [self.view addConstraint: [NSLayoutConstraint constraintWithItem..., 有一个良好自动布局框架, 则会让我们事半功倍....在Storyboard界面配置自动布局要点:     1、对于一个视图内同级别的视图,要配就全部都配置成自动布局;     2、对于每个视图,无法上下左右四个方向上设置,一定要设置全;     3、

    33640

    MyLayout&TangramKit 重大升级!

    一个视图有自己固有内容尺寸时,就不需要再为视图设置宽度或者高度约束。这也就是为什么一般情况下不对UILabel视图设置宽度和高度约束时系统也能正常完成布局。...MyLayout&TangramKit尺寸自适应 MyLayout&TangramKit中一个重要能力是支持布局视图尺寸自适应自动计算,也就是说布局视图宽度或者高度可以根据视图尺寸来自行确定...所有为视图设置约束都必须放入到一个布局视图中才有效。整个布局框架提供了多种布局视图,每种布局视图视图都将按照特定规则进行排列和布局。...S.tg_size(width:.wrap, height:.wrap) 因为MyLayout&TangramKit中尺寸自适应约束不需要明确依赖某个子视图,因此当布局视图视图有变化时系统会自动重新进行布局视图尺寸计算...因为MyLayout&TangramKit中尺寸自适应约束不需要明确依赖某个子视图,因此当布局视图视图有变化时系统会自动重新进行布局视图尺寸计算,而当布局视图尺寸变化时又会调整UIScrollView

    2.1K20

    UIView - 生命周期

    2.包含控件UIView 当增加一个控件时,就会执行 didaddsuperrview,之后也会执行一次layoutsubview。...4、旋转Screen会触发父UIView上layoutSubviews事件。 5、改变一个UIView大小时候也会触发父UIView上layoutSubviews事件。...其中原理是:执行setNeedsLayout后会在receiver标上一个需要被重新布局标记,在系统runloop一个周期自动调用layoutSubviews。...就会开始遍历subviews链,判断该receiver是否需要layout。如果需要立即执行layoutsubview addSubview一个视图只能有唯一一个视图。...如果当前操作视图已经有另外一个视图,则addsubview操作会把它先从上一个视图中移除(包括响应者链),再加到新视图上面。

    2.8K20

    iOS下界面布局利器-MyLayout布局框架

    应用场景 举例下面一个应用场景: 有一个容器视图S宽度是100而高度则是由四个从上到下依次排列视图A,B,C,D高度总和。...相对布局是一种里面的视图通过相互之间约束和依赖来进行布局和定位布局视图。相对布局里面的视图布局位置和添加顺序无关,而是通过设置视图相对依赖关系来进行定位和布局。...框架布局将垂直方向上分为上、中、下三个方位,而水平方向上则分为左、中、右三个方位,任何一个视图都只能定位在垂直方向和水平方向上一个方位上。...浮动布局是一种里面的视图按照约定方向浮动停靠,当尺寸不足以被容纳时会自动寻找最佳位置进行浮动停靠布局视图。...您需要提供一个实现曲线路径函数、一个特定坐标体系、一种特定视图在曲线上距离设置这三个要素来实现界面布局。当曲线路径形成后,视图将按相等距离依次环绕着曲线进行布局

    1.9K30

    鸿蒙应用开发-初见:ArkUI

    想了解细节,可参考 SwiftUI 中布局工作原理小结声明式布局想要布局视图都会经历由上到下一个过程,只有知道了视图大小之后才能根据对齐方式将视图放置在准确位置。...声明式布局几乎都是下面这个套路父视图视图一个布局约束(作为Root视图默认是充满屏幕,它给视图约束就是屏幕大小视图渲染并将自身大小返回给父视图视图根据视图大小和设定对齐方式计算要放置位置视图布局也遵循以上三步进行递归...,视图上报给父视图自身大小值是指 组件内容区大小ArkUI中常用布局容器如何选择使用哪种布局线性布局(Row/Column)线性布局元素在线性方向上(水平方向和垂直方向)依次排列线性布局容器包括...:元素在垂直方向居中对齐VerticalAlign.Bottom:元素在垂直方向底部对齐层叠布局(Stack)层叠布局主要用于实现基于Z轴布局,容器中元素(组件)依次入栈,后一个元素覆盖前一个元素...rowsTemplate和columnsTemplate属性值是一个由多个空格和'数字+fr'间隔拼接字符串,fr个数即网格布局行或列数,fr前面的数值大小,用于计算该行或列在网格布局宽度上占比

    24610

    iOS界面布局之一——使用autoresizing进行动态布局

    iOS界面布局之一——使用autoresizing进行动态布局 autoresizing是iOS中传统界面自动布局方式,通过它,当父视图frame变换时,视图自动做出相应调整。...一、通过代码进行布局 任何一个view都有autoresizingMask这个属性,通过这个属性可以设置当前view与其父视图相对关系。...可以看出,这时视图高度是随父视图变化而自动改变。...如果你觉得autoresizing很强大,那么你就太容易满足了,autoresizing可以满足大部分简单自动布局需求,可是它有一个致命缺陷,它只能设置视图相对于父视图变化,却不能精确这个变化度是多少...但是有一个好消息告诉你,iOS6之后autolayout自动布局方案,正是解决复杂布局好帮手,我们在下一遍博客中再进行详细讨论。 专注技术,热爱生活,交流技术,也做朋友。

    69220

    iOS布局之AutoresizingMask和AutoLayout

    一.AutoResizing 我们在使用AutoResizing进行布局时候,其主要思想就是设置视图跟随父视图frame变化而变化。具体情况,我们可以设置左跟随,右跟随等等。...屏幕快照 2016-09-18 下午4.53.23.png 我们可以看到,图中视图宽度也随着父视图宽度增加到了二倍。这就是AutoResizing一个最简单应用。...AutoResizing,我们需要进行如下操作,在当我们创建xib视图时候,我们在XIB里选中一个UIView, 1.进入file Inspector, 在这里取消AutoLayout属性,这样我们就可以使用...image.png 2.然后我们进入size Inspector,在这里我们可以看到与AutoResizing布局属性相关红色线条,我们在这里选择或者取消红线,就相当于增加或者取消了视图自动跟随约束...从而实现了视图自动布局。而当我们确定选择使用AutoLayout添加自己约束时候,我们必须设置此属性为NO,XIB中这个属性默认是NO。

    1.9K60

    浅谈 iOS AutoLayout 中 Label 抗拉伸和抗压缩

    使用场景: 当一个视图上有多个 intrinsic content size 控件,视图总和,不够填充父视图区域时,此属性可以控制优先拉伸哪个视图内容。...使用场景: 当一个视图上有多个 intrinsic content size 控件,并且控件可能会超出父视图区域时,此属性可控制哪些视图被内容被优先压缩,使其不超出父视图区域。...举例说明 Content Compression Resistance Priority 在 View 中添加了一个 UILabel: - (void)demo1 { UILabel...image.png 从最后显示效果来看,中间 Label 被压缩了。因为左右约束优先级比固有内容相关优先级要高,所以 Autolayout 布局时候会优先满足左右两个约束。...Content Hugging Priority 在 View 中添加了一个 UILabel: - (void)demo2 { UILabel *bluelabel = [[UILabel

    5.4K31

    iOS学习——UIPickerView实现年月选择器

    二 基类布局   在上一部分说了,基类布局主要是对整体架构进行布局,我们先看下有哪些内容,包括了背景蒙层视图、弹出视图(包含标题行(又包含取消按钮、确定按钮和标题)、分割线和选择器),在子类中会进行一个整体布局...:self.backgroundView]; 17 // 弹出视图 18 [self addSubview:self.alertView]; 19 // 设置弹出视图视图...下面主要提两个问题:一个是整体布局方法 - (void)initUI 实现。这里大家主要要注意添加层次,谁是谁视图,一定要区分清楚。...如果直接在蒙层上添加弹出式图作为视图的话,我们布局相对会简单很多,这里涉及到一点就是视图透明度是和父视图保持一致,如果直接将弹出视图加载到蒙层遮罩视图上,会导致弹出视图透明度也为0.3,所以弹出视图不能直接加在蒙层遮罩视图上...关于自己做这个在使用上就非常简单了,我们子类向外就暴露了一个类方法,所以我们再需要弹出选择器地方调用该方法就可以了。

    4.3K130

    iOS界面布局核心以及TangramKit介绍

    流式布局和表格布局区别是,表格布局有明确行概念,在使用前要添加行再添加列,而流式布局则没有明确行概念,由布局自动生成行和列。...当视图尺寸无法容纳到布局视图剩余空间时,则会自动寻找一个能够容纳自身尺寸最佳位置进行浮动停靠。浮动布局里面的视图并不是有规则多行多列排列。...那么为什么要用6个布局位置对象和2个布局尺寸对象来设置视图位置和尺寸而不直接用bounds和center呢?...我们知道每次当一个视图调用addSubview添加视图时都会激发调用者方法:didAddSubview。...也就是尺寸大小是由视图或者视图内容共同决定,这样视图尺寸将依赖其内部视图尺寸或者视图内容大小

    2.2K30

    谈谈 Autolayout

    AutoLayout 关于 update 几个方法 UIView 是我们经常使用一个基本控件,其中有几个基本布局方法需要清楚。...layoutSubViews: 当 View 及其所有视图 frame 发生改变时候,会调用 layoutSubviews,所以在需要更新 frame 来重新定位或更改大小时重载它。...改变一个 View 大小时候也会触发父 View 上 layoutSubviews。...告知页面需要更新,但是不会立刻开始更新视图视图会在下一个 runloop 中更新,调用 setNeedsLaylout 方法视图被重新绘制并布局之间会有一段任意时间间隔。...AutoLayout 与 Frame 在使用 AutoLayout 时候可能也会同时也会用到 frame,比如需要用到 layer 时候,想让 layer 尺寸是由其它视图尺寸设定,而这个视图又是由约束控制布局

    70620

    IOS开发系列——Masonry手写Autolayout专题【整理,部分原创】

    这里关键就在于container这个view起到了一个中间层作用能够自动计算uiscrollViewcontentSize。...Masonry 在TableCell中增加控件时,无法正常使用Masonry来进行布局,可能是Cell重用引起。...1.3.2 使用了Masonry布局控件最好手动释放内存,若有APP自动释放内存,会有延迟,导致页面布局失败 //需要手动释放mas_makeConstraints内存,若有APP自动释放内存,会有延迟...因此进行视图布局时,用前者容易挂机。...一个runloop中执行,所以如果要在布局完成后顺序执行某些处理(例如开始进行自定义绘制或者异步绘制),最好手动放到main_queue一个runloop中执行,确保布局完成后才开始执行代码。

    77510

    什么时候调用layoutSubviews

    比如,我们想更新视图位置时候,可以通过调用layoutSubviews方法,既可以实现对子视图重新布局。...layoutSubviews以下情况会被调用 苹果官方文档已经强调,不能直接调用layoutSubviews对子视图进行重新布局。那么,layoutSubviews什么情况下会被调用呢?...(这个在上面苹果官方文档里有说明) addSubview时候。 当viewframe发生改变时候。 滑动UIScrollView时候。...旋转Screen会触发父UIView上layoutSubviews事件。 改变一个UIView大小时候也会触发父UIView上layoutSubviews事件。...注意: 当viewfram值为0时候,`addSubview`也不会调用`layoutSubviews`。 layoutSubviews方法在对自雷视图进行布局时候非常方便。

    41610

    CSS中float定位技术在iOS上实现

    浮动 我们UI界面中总是有一种场景是:某个容器视图后续添加视图左边总是紧跟着前面添加视图右边,而上边则跟前面视图上边保持一致进行停靠显示,而当容器视图剩余宽度空间不够容纳新加入视图时则新加入视图自动往下移动且在不覆盖已经排列好视图前提下寻找出一个可以容纳其宽度最合适位置进行停靠...要实现和使用浮动布局,我们必须要使用浮动布局MyFloatLayout这个类。...即便如此,对于上面的特殊情况,我们还需要进行编程以及条件判断来完成边界线指定,因此为了解决这个问题,我们在布局中新增加了一个智能边界线属性: @property(nonatomic, strong)...,那么这个布局视图里面的布局视图将会根据视图之间关系而自动智能生成边界线。...而如果我们某个布局视图里面的布局视图不想使用智能边界线,而是仍想自己手动设定,那么只需要将自己notUseIntelligentBorderline设置为YES即可,他表示不使用布局提供智能边界线功能

    2.2K20
    领券