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

UIview

更复杂的内容可以被子类化UIView提出和实施必要的图纸和事件处理代码。UIKit框架还包含一组标准的子类,范围从简单的按钮到复杂的表,可以按原样使用。...一些可以动画视图声明的属性的新值。 布局和子视图管理 一个视图可以包含零个或更多的子视图。 每个视图定义了自己的默认的调整行为与它的父视图。 一个视图可以定义子视图的大小和位置。...父视图可以包含任意数量的子视图但每个子视图只有一个父视图,负责适当定位它的子视图。 一个视图的几何定义框架,边界和中心属性。...的尺寸部分框架和边界矩形耦合在一起,因此改变大小的矩形更新的大小。如何使用UIView类的详细信息,看到视图iOS编程指南。...视图包含使用UIKit定制内容或核心图形、系统调用视图的draw(_:)方法。该方法的实现负责绘制视图的内容到当前图形上下文,这是系统设置的自动调用该方法之前。

71710

iOS UI控件了解一下

当一个view设置bounds时,会把自己当成一个容器,定义自己的边界大小以及左上角的初始坐标。当子视图添加到此视图时,会根据bounds指定的原点(0,0)计算frame,而非左上角。...UIView的操作方法 1)添加视图 UIView的addSubview:方法可以添加子视图,对于同一个视图的所有子视图来讲,后添加的子视图会把已加的子视图盖在下面。...(2)UILabel是UIView子类,作为子类一般是为了扩充父类的功能,UILabel扩展了文字显示的功能,UILabel是能显示文字的视图。 2)如何使用UILabel?...2)如何使用UIButton? 创建UIButton与创建UILabel、UITextField、UIView的步骤很相似。...①创建button对象(如果本类有初始化方法,使用自己的;否则使用父类的); ②设置按钮显示相关的属性; ③为按钮添加点击事件; ④添加按钮到父视图上

2.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MyLayout&TangramKit 的重大升级!

    假设有如下的布局: 布局界面 我们希望父容器视图S的尺寸是自适应的,那么就需要设置S视图的右边边界等于子视图B的右边边界,同时需要设置S视图的底部边界等于子视图C的底部边界。...,如果需要上下滚动则将容器视图中的最底部子视图这里是C的底部边界依赖于容器视图的底部边界。...,如果需要左右滚动则将容器视图中的最右部子视图这里是B的右边边界依赖于容器视图的右边边界。...所有为子视图设置的约束都必须放入到一个布局视图中才有效。整个布局框架提供了多种布局视图,每种布局视图中的子视图都将按照特定的规则进行排列和布局。...这里只介绍将MyLayout&TangramKit的布局视图加入到AutoLayout布局体系中去的一些方法。 1.将布局视图添加到非布局父视图中 因为布局视图也是一个视图,都是从UIView派生。

    2.1K20

    IOS触摸事件分发机制详解

    前言 很多时候大家都不关心IOS触摸事件的分发机制的实现原理,当遇到以下几种情形的时候你很可能抓破头皮都找不到解决方案: 某个点击消息由父视图来处理,子视图怎么把消息传递给父视图 这个按钮不灵敏,怎么扩大点击响应区域...Hit-Testing就完美的解决了这个问题,通过检测触摸点是否在相关的视图边界范围内,如果在,就继续递归检测该视图的所有子视图,离用户最近的那个视图的边界如果包含触摸点,那么它就是我们要找的Hit-Test...,如果在view的边界范围内,则返回YES,然后,在子视图中递归调用 hitTest:withEvent: 。...应用 扩大按钮点击区域 当视图调用 - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 进行边界检测的时候,重写该方法扩大视图的检测边界值...解决办法通常有两种: 父视图和子视图都重写- (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event

    3.6K90

    AVKit框架详细解析(四) —— 基于AVKit 和 AVFoundation框架的视频流App的构建

    这就是应用程序如何用数据填充现有列表的方式。 视频本身来自嵌入在应用程序包中的 JSON 文件。 如果您好奇,您可以查看 Video.swift 以了解它们是如何获取的。...UIView 只是 CALayer 的包装器。 它提供触摸处理和辅助功能,但不是子类。 相反,它拥有并管理底层图层属性。 一个绝妙的技巧是,您实际上可以指定您希望视图子类拥有的图层类型。...您刚刚将视频剪辑 URL 传递给视图,但您还没有对它们进行任何操作。 2....再次构建并运行,您将能够点击和双击来播放剪辑的速度和音量。 这表明添加自定义控件以与自定义视频视图交互是多么容易。 现在,您只需轻按一下即可提高音量并进入快播状态。 5....当您这样做时,您会注意到即使视频循环播放器没有发出任何噪音,您的音乐也已关闭!

    7K10

    UIKit Dynamics:开始入门 —《Graphics & Animation系列一》

    这会导致边界使用提供给UIDynamicAnimator的参考视图的边界。 运行时可以看到正方形与屏幕底部碰撞,稍微反弹,然后停止,如下所示: ?...碰撞行为在与其相关的每个项目周围形成“边界”; 这将它们从可以通过彼此的对象变成更坚实的对象。 更新前面的图,可以看到碰撞行为现在与两个视图相关联: ?...由于障碍视图是不可移动的,所以动力学引擎不需要知道它的存在。 但是如何检测到碰撞?...碰撞通知 到目前为止,已经添加了一些视图和行为,然后让动态接管。 在下一步中,将了解如何在物品碰撞时接收通知。...一个UISnapBehavior使一个对象跳跃到一个有弹性的弹簧式动画的指定位置。 删除上一节添加的代码:collisionBehavior()中的firstContact属性和if语句。

    1.9K30

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

    2 UIView接口说明 2.1 API接口说明 addSubview:     添加一个子视图到接收者并让它在最上面显示出来。...如果这个点位于接收者之外就返回nil 讨论         这个方法贯穿视图的层次发送pointInside:withEvent:消息到每一个子视图用来决定那个子视图需要接收触摸事件。...不要在显示的时候调用 sendSubviewToBack:     移动指定的子视图到它相邻视图的後面 - (void)sendSubviewToBack:(UIView *)view 参数 view...    一个子视图用来移动到它後面去 setNeedsDisplay     控制接收者的边界矩形被标记为需要显示 -(void)setNeedsDisplay 讨论     默认情况下,视图几何图形的改变自动重绘而不需要调用...:withEvent:返回nil;     • 若返回YES,则向当前视图的所有子视图(subviews)发送hitTest:withEvent:消息,所有子视图的遍历顺序是从top到bottom,即从

    70530

    图层树和寄宿图 -- iOS Core Animation 系列一

    视图在层级关系中可以互相嵌套,一个视图可以管理它的所有子视图的位置。 在iOS中,所有的视图都是从UIView这个基类派生出来的。...CALayer类在概念上和UIView类似,也是一些被层级关系树管理的矩形块,也可以包含一些内容,并且管理子视图的位置。...1.3 平行的层级关系 每个UIView都对应着一个CALayer,视图的职责是创建并管理这个图层,以确保党子视图在层级关系中添加或者被移除的时候,他们对应的图层也同样的在对应的层级关系树中有相同的操作...2.1.4 maskToBounds 看上面最新的运行图,发现图片超出了视图的边界。因为默认情况下,UIView仍会绘制超过边界的内容,在CALayer也不例外。...UIView有个clipsToBounds属性来决定是否显示超出边界的内容。CALayer对应的属性叫做maskToBounds,把它设置成YES就可以不显示超出部分的图片了。

    1.2K20

    UIKit Dynamics 置身真实世界

    这导致边界提供给UIDynamicAnimator参考视图的边界。 四、处理碰撞 添加一个不可移动的障碍,下降的正方形将与之相冲突。...view.addSubview(barrier) 确实提供了一个重要的提醒:dynamics只影响与行为相关联的视图 大多数行为可以与多个项目相关联,并且每个项目可以与多个行为相关联 五、使对象响应碰撞...与障碍物碰撞2 下面将展示动态引擎如何与应用程序中的对象进行交互的一些细节。...这个协议意味着动态不紧密耦合UIView; 确实有另一个UIKit类不是视图,但仍然采用这个协议:UICollectionViewLayoutAttributes。...然后创建一个新的捕捉行为,将square对齐到用户触摸的位置,并将其添加到动画制作工具(animator)。 现在你可以随便点击屏幕,square会跳到你点击的位置。 效果如下: ?

    1.3K100

    UIDynamic 物理引擎概念介绍UIDynamicAnimator(动画者)动力行为(UIDynamicBehavior)一、抽象类 UIDynamicBehavior二、UIGravityBeh

    UICollisionBehaviorModeEverything 可以和边界和控件碰撞 3.是否以参照视图的bounds为碰撞边界,设置为YES会设置当前view为边界 @property...bounds为边界,并且设置视图的内边距 - (void)setTranslatesReferenceBoundsIntoBoundaryWithInsets:(UIEdgeInsets)insets;...(把item参数强转成使用的控件) UIView *view = (UIView *)item; //获取当前碰撞到的边界名称 NSString *ID = (NSString...offsetFromCenter:(UIOffset)offset1 attachedToItem:(id )item2 offsetFromCenter:(UIOffset)offset2; 把以子视图为基准的坐标转换为以父视图为基准的视图坐标方法...子视图为基准的坐标转换为以父视图为基准的视图坐标方法 ---- UIPushBehavior(推行为) 注意要进行懒加载,多次添加会导致无效 1.获取该行为作用的动力项 @property

    3.2K80

    CALayer的寄宿图

    一个视图就是在屏幕上显示的一个矩阵块(比如图片、文字或者视频),它能够拦截点击以及触摸手势等用户输入。视图在层级关系中可以相互嵌套,一个视图可以管理他的所有所有子视图的位置。...在iOS当中,所有的视图都是从一个叫做UIView的基类派生而来,UIView可以处理触摸事件,支持基于CoreGraphics的绘图,可以做仿射变换(例如旋转或缩放),或者简单的滑动以及渐变动画。...CALayer类在概念上和UIView类似,同样也是一些被层级关系树管理的矩阵块,同样也可以包含一些内容(像图片、文本、背景色),管理子图层的位置。...当图片大小超过了视图的边界时,默认情况下,UIView会绘制超过边界的内容或者子视图,在CALayer下也是这样的。...UIView中有一个clipsToBounds属性,可用来决定是否展示超出边界的内容。

    1K20

    史上最详细的iOS之事件的传递和响应机制-原理篇

    前言: 按照时间顺序,事件的生命周期是这样的:   事件的产生和传递(事件如何从父控件传递到子控件并寻找到最合适的view、寻找最合适的view的底层实现、拦截事件的处理)->找到最合适的view后事件的处理...所以,还是那句话,想处理UIView的触摸事件,必须自定义UIView子类继承自UIView。 2.1.UIView的拖拽 那么,如何实现UIView的拖拽呢?...如果能,那么在判断触摸点在不在窗口自己身上    2.如果触摸点也在窗口身上,那么窗口会从后往前遍历自己的子控件(遍历自己的子控件只是为了寻找出来最合适的view)    3.遍历到每一个子控件后,...首先看initial view能否处理这个事件,如果不能则会将事件传递给其上级视图(inital view的superView);如果上级视图仍然无法处理则会继续往上传递;一直传递到视图控制器view...; } 事件的传递和响应的区别: 事件的传递是从上到下(父控件到子控件),事件的响应是从下到上(顺着响应者链条向上传递:子控件到父控件。

    11.4K70

    视觉效果 -- iOS Core Animation 系列三

    在Storyboard中放置两个白色的view,每个view分别有两个子view(一个黄色,一个青色),而且都超出了父视图的边界: ?...通过上面的示例可以发现: 只设置cornerRadius时,默认情况下,只影响背景颜色,而不影响背景图片或者子图层。 如果想要截取这个视图的图片和子视图,需要设置masksToBounds为YES。...shadowRadius属性控制着阴影的模糊度,当值为0的时候,阴影和视图一样有一个明显的边界,值越大,边界线看起来就会越模糊。...如果想了解的话请点击此处 组透明 alpha UIView有一个alpha属性来决定视图的透明度,对应的CALayer有一个opacity属性。这两个属性都会影响子层级的显示透明度。 下面做个示例。...但是如果图层包含一个同样显示50%透明的子图层时,你所看到的视图,50%来自子视图,25%来了图层本身的颜色,另外的25%则来自背景色。 如果想保持透明度一直。

    1.1K30

    【IOS开发进阶系列】动画专题

    每一个UIview都有一个CALayer实例的图层属性,也就是所谓的backing layer,视图的职责就是创建并管理这个图层,以确保当子视图在层级关系中添加或者被移除的时候,他们关联的图层也同样对应在层级关系树当中有相同的操作...默认情况下,UIView仍然会绘制超过边界的内容或是子视图,在CALayer下也是这样的。        ...这涉及到图片是如何显示和拉伸的,所以要比contentsGravity灵活多了。...anchorPoint的属性将会在后续介绍到,现在把它想成图层的中心点就好了。图3.1显示了这些属性是如何相互依赖的。...而且由于CALayer不支持自动缩放和自动布局,子视图并不是主动跟踪视图边界的大小,所以每次视图大小被更改,我们不得不手动更新子图层的边界。

    56810

    iOS动画-CALayer基础知识

    时,其内部会自动创建CALayer图层对象(即UIView的关联图层),UIView调用drawRect:方法进行绘图,并且将所有的内容绘制到自己的图层上,绘制完毕后,系统会将图层拷贝到屏幕上,于是就完成了...视图的的职责就是创建并管理这个图层,以确保子视图在层级关系中添加或者被移除的时候,它们的关联图层也同样对应在层级关系树当中有相同的操作。...,默认1.0;1.0:以每个点1个像素绘制图片;2.0:以每个点2个像素绘制图片,Retina屏幕; maskToBounds(BOOL) clipsToBounds(BOOL) 超出边界的内容或者子视图是否显示...masksToBounds属性,但示例中绘制的视图依然被裁剪了,这是因为通过CALayer绘制寄宿图并没有对超出边界外的内容提供绘制支持; 3.设置代理 CALayerDelegate不能是UIView...;但这时候我们又不得不考虑一个问题:修改锚点可以让我们的动画围绕非中心点旋转,但是这也改变了原有视图的位置frame,这是我们不想要的结果,该如何解决呢?

    1.9K50

    JEDEC:从Llama到多模态,硬件如何推动人工智能的边界?

    全文概览 大语言模型(LLM)和多模态模型的崛起,AI对计算资源的需求呈指数级增长。从Llama-2到Llama-Next,模型的复杂性不断提升,从单一的文本处理扩展到视频、图像和音频的多模态处理。...分层内存架构的优势认识到分层内存设计如何在高性能与高容量之间取得平衡,满足大规模AI计算的需求。 软硬件协同设计的重要性理解AI系统性能的提升不仅依赖于硬件升级,还需要软件与硬件的紧密配合。...从Llama-2到Llama-Next,模型的能力逐步扩展,从单一的文本处理,发展到同时处理视频、图像和音频等多种输入类型。...扩展卡的内存控制器负责管理连接到外部内存(如DDR/LPDDR、CXL等)的内存资源。 通信路径MemLink与扩展卡的内存控制器连接,使加速器能够直接访问扩展卡内的内存,从而实现内存的进一步扩展。...Deep Dive 未来AI模型的复杂性将如何进一步推动硬件技术的创新? 在分层内存架构中,如何更好地优化HBM与外部DRAM之间的数据传输效率?

    10310

    iOS-控件响应用户控制事件之事件处理

    UITouch UITouch的作用 保存着跟手指相关的信息,比如触摸的位置、时间、阶段 当手指移动时,系统会更新同一个UITouch对象,使之能够一直保存该手指在的触摸位置 当手指离开屏幕时,系统会销毁相应的...,那么子控件就不可能接收到触摸事件(掌握) 如何找到最合适的控件来处理事件?...从后往前遍历子控件,重复前面的两个步骤 如果没有符合条件的子控件,那么就自己最适合处理 原理 // point:是方法调用者坐标系上的触摸点的位置 - (UIView *)hitTest:(CGPoint...UIView *childView = self.subviews[i]; // 转换成子控件坐标系上点 CGPoint childP = [self...2> 如果当前这个view不是控制器的view,那么父控件就是上一个响应者 响应者链的事件传递过程 如果view的控制器存在,就传递给控制器;如果控制器不存在,则将其传递给它的父视图 在视图层次结构的最顶级视图

    97670
    领券