首页
学习
活动
专区
工具
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.7K21

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

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

    34940

    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前面的数值大小,用于计算该行或列在网格布局宽度上的占比

    27810

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

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

    70820

    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.5K31

    谈谈 Autolayout

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

    70920

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

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

    4.6K130

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

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

    79510

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

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

    2.2K30

    什么时候调用layoutSubviews

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

    42710

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

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

    2.2K20
    领券