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

为什么来自另一个视图控制器的subView会随着我的滚动而移动?

来自另一个视图控制器的subView会随着滚动而移动的原因可能是因为在滚动过程中,该subView被添加到了滚动视图中,而滚动视图会根据滚动的位置来调整其子视图的位置。

在iOS开发中,通常使用UIScrollView或其子类作为滚动视图。当我们将一个视图添加到UIScrollView中时,该视图会成为UIScrollView的子视图,并随着滚动视图的滚动而移动。

解决这个问题的方法有两种:

  1. 将subView添加到滚动视图的父视图中:将subView添加到滚动视图所在的父视图中,而不是直接添加到滚动视图中。这样,subView就不会随着滚动而移动了。
  2. 将subView的位置固定:如果你希望subView在滚动过程中保持固定位置,可以通过设置subView的frame或约束来实现。确保subView的位置不受滚动视图的影响,可以使用Auto Layout或手动设置frame的方式来实现。

需要注意的是,以上方法适用于大部分情况,但具体解决方案还要根据具体的代码和布局结构来确定。

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

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

相关·内容

【IOS开发基础系列】UIScrollView专题

一个滚动视图可以根据手指移动,调整原点位置。展示内容视图,根据滚动视图原点位置,开始绘制视图内容,这个原点位置就是滚动视图偏移量。...前面所说时,中断touch-down事件,和取消touch事件是俩码事,所以当快速在子视图移动时候,当然可以滚动。...但是如果你慢速移动的话,就可以区分这个属性了,假如设定为YES,在子视图上慢速移动也可以滚动视图,但是如果为NO 。...编写很多子类是很沉闷事情,你最后会有很多无法重复使用单独视图MVC视图部分一个重点是视图是可以在不同控制器和不同模式之中重复使用,如果我们把所有逻辑都放在视图中,它减少了可复用性。        ...它在这些对象之间保持了松散配对,视图本身与视图控制器或任何其它控制器对象,委托不是滚轴视图直接子类,它比起牢固配对子类更加松散。

57930
  • SwiftUI 新容器视图 API 深度解析:轻松构建自定义布局

    使用 ViewBuilder@ViewBuilder 闭包让我们可以轻松地组合多个视图,并将一个视图嵌入到另一个视图中。但是如何从 @ViewBuilder 闭包中提取子视图呢?...Subview 类型来公开提取视图实例。...访问子视图另一种新 API 允许我们通过索引访问子视图不是使用 ForEach 视图进行迭代。...Demo根据文章内容,将提供一个可以展示如何使用 SwiftUI 新容器视图 API 构建自定义视图简单示例,包含 Card、Carousel 和 Magazine 容器视图。...你可以在应用中多个地方使用该容器来保持一致样式。Carousel:一个横向滚动容器视图,可以自动排列并展示内容,适合展示横向滑动图像或视图

    13011

    【IOS开发基础系列】UIView专题

    在调用didFinishLaunchingWithOptions:方法之前,会加载storyboard,在加载时候创建一个window,接下来创建箭头所指向控制器,把该控制器设置为UIWindow...在该方法中,创建一个Window,然后创建一个控制器,并把该控制器设置为UIWindow控制器,接下来再将window显示出来,即看到了运行后显示界面。...*)subview 参数 subview     被添加做子视图视图对象 讨论     被子类重写用来执行额外命令当子视图添加到接收者。...这个只发生在接收者从它视图上移除或者接收者添加到父视图不是添加到window中。...    一个子视图用来移动到它後面去 setNeedsDisplay     控制接收者边界矩形被标记为需要显示 -(void)setNeedsDisplay 讨论     默认情况下,视图几何图形改变自动重绘不需要调用

    62830

    View编程指南(三)

    使用这些方法比删除subview并重新插入它们要快。 要从其superview移除subview,请调用subviewremoveFromSuperview方法(不是superview)。...将subview添加到另一个View时,UIKit会通知superview和subview。...当打电话时,状态栏高度增加,当用户结束通话时,状态栏大小会减小。 在运行时修改view 随着应用程序从用户接收输入,他们调整其用户界面以响应该输入。...当用户与滚动view交互时,大滚动区域可能隐藏并显示切片子view。有关支持可滚动内容更多信息,请参阅Scroll View Programming Guide for iOS。...更改view所有权或delegate关系导致绘图问题和应用程序中潜在崩溃 如果您主要使用图层对象不是view,则可以根据需要将自定义图层对象合并到view层次结构中。

    1.7K30

    SwiftUI 布局协议 - Part2

    我们还可以添加一个改进,那就是视图旋转动画。仔细观察并比较下面三个轮子:一个不旋转。另外两个旋转指向中心,但是一个不使用动画另一个使用。...发现更新路径产生一个循环,即使该路径被绘制为不影响布局背景视图也是如此,所以为了避免这种循环,我们要确保路径发生改变,然后才更新绑定,这样就可以成功打破循环。...在本例中,创建了两个 UUID 布局值,一个标识视图另一个作为父视图 ID。...感谢新布局协议,创建了一个修饰器,它在尝试理解为什么视图不像您认为那样工作时候非常有用,修饰器在这儿: func showSizes(_ proposals: [MeasureLayout.SizeRequest...经常认为这些视图是理所当然,并将它们视为简单不复杂容器,好吧,尝试编写自己版本,在各种情况下复制一个 HStack ,多种类型视图和布局优先级竞争同一个空间。。。这是一个不错挑战!

    2.7K30

    @State 研究

    不过,在使用中也发现了一些奇怪问题。发现在视图(View)数量达到一定程度,随着数据量增加,整个app响应有些开始迟钝,变得有粘滞感、不跟手。...app响应出现了问题一方面肯定和我代码效率、数据结构设计欠佳有关;不过随着继续分析,发现其中也有很大部分原因来自于SwiftUI中所使用响应式实现方式。...不恰当使用,可能导致响应速度随着数据量及View量增加大幅下降。通过一段时间研究和分析,打算用两篇文章来阐述这方面的问题,并尝试提供一个现阶段使用思路。...视图自动重绘以反应状态变化。...推测@State同视图依赖是在ViewBuilder解析时进行。编译器在解析我们body时,判断date数据变化是否会对当前视图造成改变。如果没有则不建立依赖关联。

    2.9K20

    SwiftUI 在 WWDC 24 之后新变化

    让我们深入了解 SwiftUI 框架引入新功能。首先要提到主要变化是 App、Scene 和 View 协议 @MainActor 隔离。这可能破坏你代码,所以请记住这一点。...SwiftUI 引入了新 Subview 和 SubviewsCollection 类型,提供了对真实视图代理访问。...我们还在 TabSection 实例上使用 tabViewStyle 视图修饰符,将特定标签部分分组并移动到侧边栏。...滚动位置新 ScrollPosition 类型与 scrollPosition 视图修饰符配对,允许我们读取 ScrollView 实例精确位置。我们还可以使用它编程地滚动滚动内容特定点。...今年主要变化包括 @MainActor 隔离、视图集合新重载、新可定制标签栏体验、英雄动画、滚动位置新功能以及新 Entry 和 Previewable 宏。

    12910

    SwiftUI 动画进阶 — Part4:TimelineView

    两者之间唯一区别是,一个写在内容闭包中,另一个被放在单独视图中以提高可读性。...为什么左边 emoji 变,另一个总是悲伤?事实证明, SubView 没有接收到任何变化参数,这意味着它没有依赖关系。SwiftUI 没有理由重新计算视图主体。...为了解决这个问题,我们更改了 SubView 视图以添加一个参数,该参数将随着时间轴每次更新改变。请注意,我们不需要使用参数,它只需要在那里。尽管如此,我们将看到这个未使用值稍后会非常有用。...我们从中得出一个重要概念是,尽管时间线可能产生一定数量更新,但视图内容很可能更新更多次。 TimelineView 与传统动画相结合 新 TimelineView 带来了很多新机会。...在这种情况下,我们只需封装内容并将标志变量移动到封装视图内。

    3.8K30

    IOS基础知识第二季

    UIViewController是视图控制器基类 12.每个应用至少一个窗口,UIWindow继承UIView 自动创建(xcode4.5之后) 13.UIScreen对象可以充当IOS设备物理屏幕替代者...:belowSubview:视图插入指定视图之下 bringSubviewToFront:视图移动到最顶层 sendSubviewToBack:视图移动到最底层 exchangeSubviewAtIndex...:withSubviewAtIndex两个索引对应视图交换位置 removeFromSuperview:视图从父视图移除 19.视图属性 19.1tag属性标签值 view2.tag = 2;...//设置tag属性 UIView *_view = [self.window viewWithTag:2];或者tag为2视图 其他属性:子视图继承父视图属性 alpha透明度0.0~1 backgroundColor...*_view = (SubView *)[self.window viewWithTag:110]; 这样view才能使用subview方法 这样我们自定义UIView需要重载dealloc

    96660

    iOS 中事件响应

    UIView:若视图控制器视图,则其 nextResponder 为控制器对象;否则,其 nextResponder 为父视图; UIViewController:若控制器视图是 window...视图,则其 nextResponder 为窗口对象;若控制器是从别的控制器 present 出来,则其 nextResponder 为 presenting view controller; UIWindow...传递到 UIScrollView 后,其先将该事件拦截不会立即传递给对应视图, 同时开始一个 150ms 倒计时,并监听用户接下来行为。...当倒计时结束前,如果用户手指发生了移动,直接滚动内容视图,不会将该事件传递给对应视图; 当倒计时结束时,如果用户手指位置没有改变,则调用自身 -touchesShouldBegin:withEvent...var delaysContentTouches: Bool // 是否可以取消内容视图被触摸,默认为YES,如果设置为NO,则一旦开始跟踪事件,即使手指进行移动也不会取消已经传递给子视图事件,即滚动视图不会再滚动

    2.7K11

    iOS开发--事件传递,响应者链条及常见面试题

    . 2.响应过程 iOS系统检测到手指触摸(Touch)操作时会将其打包成一个UIEvent对象,并放入当前活动Application事件队列,单例UIApplication从事件队列中取出触摸事件并传递给单例...,如果点在自己身上,且子控件中有最合适响应者,就返回对应子控件,否则就不响应,并将该事件随着响应者链条往回传递,交给上一个响应者来处理....(即调用supertouches方法) 谁是上一个响应者? 1\. 如果view控制器存在,就传递给控制器;如果控制器不存在,则将其传递给它视图 2\....在视图层次结构最顶级视图,如果也不能处理收到事件或消息,则其将事件传递给window对象进行处理 3\....return value; } } return NO; } 例如放大控件响应区域,view上有n个子视图,点击其中一个让另一个来响应等等,都是可以通过重载pointInside

    81731

    深入详解iOS适配技术

    前言 iPhone自诞生以来,随着其屏幕尺寸不断多样化,屏幕适配技术一直在发展更新。...当我们点击周围四条虚线时,虚线变成实线,代表子控件和父控件在这个方向上间距被固定了。当我们点击子视图内部虚线时,同样也变为实线,代表子视图宽度或者高度被固定了。...UIView有一个autoresizingMask属性,可以通过该属性来约束父子视图之前位置关系,并且UIView还有一个BOOL类型autoresizesSubviews属性,默认为YES,代表父控件跟随子控件尺寸变化变化...]; // 子视图距离父视图左右间距不变,宽度随父视图宽度缩放缩放。...从另一个角度也能解释:autoresizing是约束子控件和父控件之间位置关系控制器view并没有父控件,所以不能通过autoresizing来约束控制器view。

    8.5K70

    在线等,挺急!

    : M 网络请求部分, V数据显示部分, C逻辑交互部分.对于controller控制器层,往往需要结合业务逻辑去处理,代码量并不算大;对于Model数据模型层,我们有 AFNetworing,...,也更快捷些.在此期间,研究一个重要话题就是如何实现Xib之间嵌套复用,即在一个Xib上如何直接嵌入另一个Xib.乍听起来很简单,但是在亲身实践之后,才发现其难度.不是来吐槽,个中曲折不再一一赘述...,下面是研究成果: 上图,是一个Xib模块,其中色块部分,嵌套另一个Xib模块.最终显示是,色块自动被对应Xib模块替代....< 当前视图所在控制器. @property (weak, nonatomic, readonly)NSLayoutConstraint * heightContronstraint; //!...考虑到多屏幕尺寸,UI设计图等比缩放常用情况,分享一个可以唯一确定UI元素方案: [subView makeConstraints:^(MASConstraintMaker *make) {

    1.4K60

    用 SwiftUI 方式进行布局

    在上面的代码中,由于两个视图使用了同样动画曲线设定,因此,在移动时并不会出现分离情况。...ScrollView 会使用父视图给定全部建议尺寸创建滚动区域,但在询问其子视图需求尺寸时只会提供理想尺寸。...SwiftUI 在进行布局时,当布局容器给出建议尺寸无法满足全部子视图需求尺寸时,根据子视图 Priority,优先满足级别较高视图布局需求。...因此,只需要在状态切换时,调整视图对齐指南即可( 视图一将自动跟随视图移动 )。 此种方式在视觉上与通过 VStack 实现类似,但两者在需求尺寸上有明显不同。...VStack 纵向需求尺寸为视图一与视图高度和,通过 overlay 嵌套,纵向需求尺寸仅为视图高度( 尽管视觉上视图一在视图上方且紧密相连 )。

    4.8K80

    用 SwiftUI 方式进行布局

    在上面的代码中,由于两个视图使用了同样动画曲线设定,因此,在移动时并不会出现分离情况。...ScrollView 会使用父视图给定全部建议尺寸创建滚动区域,但在询问其子视图需求尺寸时只会提供理想尺寸。...SwiftUI 在进行布局时,当布局容器给出建议尺寸无法满足全部子视图需求尺寸时,根据子视图 Priority,优先满足级别较高视图布局需求。...因此,只需要在状态切换时,调整视图对齐指南即可( 视图一将自动跟随视图移动 )。 此种方式在视觉上与通过 VStack 实现类似,但两者在需求尺寸上有明显不同。...VStack 纵向需求尺寸为视图一与视图高度和,通过 overlay 嵌套,纵向需求尺寸仅为视图高度( 尽管视觉上视图一在视图上方且紧密相连 )。

    3.3K00

    UITableView在Flutter中是什么?

    滚动发生变化列表项又很多时,这样计算就会非常频繁。 如果提前设置好itemExtent,ListView则可以计算好每一个列表项元素相对位置,以及自身视图高度,省去了无谓计算。...接下来,通过一个滚动视差例子,与你演示CustomScrollView使用方法。 视差滚动是指让多层背景以不同速度移动,在形成立体滚动效果同时,还能保证良好视觉体验。...作为移动应用交互设计热点趋势,越来越多移动应用使用了这项技术。...以一个有着封面头图列表为例,我们希望封面头图和列表这两层视图滚动联动起来,当用户滚动列表时,头图根据用户滚动手势,进行缩小与展开。...ListView组件控制器是ScrollController,我们可以通过它来获取视图滚动信息,更新视图滚动位置。

    5.6K10

    View编程指南

    如果子View是部分透明,则来自两个view内容在被显示在屏幕上之前被混合在一起。每个superview将其子view存储在有序数组中,并且该数组中顺序也影响每个子View可见性。...如果两个兄弟子view彼此重叠,则最后添加子view(或移动到子view数组末尾)会出现在另一个之上。 Superview - subview关系也影响多个view行为。...大多数contentMode在View边界内拉伸或重新定位现有的快照,不是创建一个新快照。 当呈现view内容时,实际绘图过程根据View及其配置变化。...滚动时调整view绘图行为 滚动可以在很短时间内产生大量view更新。 如果您view绘制代码没有适当地调整,则view滚动性能可能很低。...不要通过嵌入subview来自定义控件 虽然在技术上可以将subview添加到标准系统控件(从UIControl继承对象),但不应该以这种方式定制它们。

    2.3K20
    领券