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

iOS面试题-UI篇

UIView显示屏幕上归功于CALayer,通过调用drawRect方法来渲染自身的内容,调节CALayer属性可以调整UIView的外观, UIView继承自UIResponder,比起CALayer...可以响应用户事件,Xcode6之后可以方便的通过视图调试功能查看图层之间的关系 UIView是iOS系统界面元素的基础,所有的界面元素都继承自它。...补充部分,这部分有深度了,大致了解一下吧,UIView的layer树形系统内部被系统维护着三份copy 逻辑树,就是代码里可以操纵的,例如更改layer的属性等等就在这一份 动画树,这是一个中间层,系统正是在这一层上更改属性...,进行各种渲染操作 显示树,这棵树的内容是当前正被显示屏幕上的内容 这三棵树的逻辑结构都是一样的,区别只有各自的属性 loadView的作用?...先遍历最后添加的子控件)遍历子控件,重复前面的两个步骤 如果没有符合条件的子控件,那么就自己处理 事件响应者链 如果当前view是控制器的view,那么就传递给控制器 如果控制器不存在,则将其传递给它的父控件 视图层次结构的最顶层视图也不能处理接收到的事件或消息

2K21
您找到你想要的搜索结果了吗?
是的
没有找到

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

- (BOOL)isDescendantOfView:(UIView *)view 参数 view     一个视图用来测试子视图视图层次的关系 返回值     如果接收者是视图的子视图就返回YES...viewWithTag:     返回视图的特定的标签 - (UIView *)viewWithTag:(NSInteger)tag 参数 tag     一个用来视图中搜索的标签 返回值     视图接收者层次符合的标签...消息或者子视图从接收者视图层次移除因为它要被添加到其他视图了 3 UIView动画 3.1 概述         UIView视图的动画功能,可以使更新或切换视图时有放缓节奏、产生流畅的动画效果,进而改善用户体验...• 改变透明度:改变视图的alpha值。     • 改变状态:隐藏或显示状态。     • 改变视图层次顺序视图哪个前哪个后。     ...,所以ViewE变成了该次触摸事件的hit-Test View; 5.1.2 注意点     1、默认的hit-testing顺序是按照UIViewSubviews的逆顺序;     2、如果View

49130

IOS开发之视图视图控制器

UIKit框架中都有一个UIWindow来容纳我们的View。应用程序几乎全部的可视控件都是UIView以及UIView的子类的实例,并且UIWindow也是UIView的子类。...UIWindow可以不借助于父类视图显示屏幕上,其余的视图都需要添加到父视图中才能显示。...我们空工程的文件结构如下,我们只需AppDelegate.m添加我们的视图,还是那句话为了更好的理解我们的视图,所有视图的创建和配置我们都用代码编写。 ?         ...添加一个视图          视图层次用index来区分,这个值从0开始以步长1依次增加,index为0的时候代表视图层次的最底层,下面是苹果官方文档对Views的介绍的截图: ?     ...视图层大致分为下面的几类         1.容器视图                 容器视图用于增强其他视图的功能,或者为视图内容提供额外的视觉分隔,比如UIScorllView类用于显示因内容太大而无法显示一个屏幕上的视图

1.7K70

iOS UI控件了解一下

,提供了许多属性和方法:显示效果控制(frame、alpha等)、视图添加和移除(addSubview: 等)、视图层次调整(bringSubviewToFront:等)等。...UIView的属性frame、bounds、center 1)frame:描述当前视图在其父视图中的位置和大小; frame是一个结构体,包含2部分内容:origin和size。...UIView提供了其他添加视图的方法(详见下表): ? 2)管理视图层次 UIView除了提供添加视图的方法,还提供了管理视图层次的方法(详见下表): ?...(1)UILabel(标签):是显示文本的控件,AppUILabel是出现频率最高的控件。...AppUITextField出现频率也比较高; (2)iOS系统借助虚拟键盘实现输入,当点击输入框,系统会自动调出键盘,方便 你进一步操作。

2.6K20

View编程指南(四)

iOS,动画广泛用于重新定位view,更改大小,将其从view层次结构移除,并将其隐藏起来。 您可以使用动画将反馈传达给用户或实现有趣的视觉效果。...UIKit,动画是使用UIView对象执行的。 view支持一组涵盖许多常见任务的基本动画。...View之间创建动画转换 view转换可帮助您隐藏与view层次结构添加,删除,隐藏或显示view相关的突然更改。...用不同的view替换view层次结构的一个view。 如果要替换跨越全部或大部分屏幕的view层次结构,通常选择此选项。...传递给此方法的动画块,通常动画的唯一更改是与显示,隐藏,添加或删除子view相关的更改。将动画限制为该集合允许view创建view之前和之后版本的快照图像,并且两个图像之间创建动画,这更高效。

62810

iOS14开发-入门知识

AppDelegate —> SceneDelegate SceneDelegate 的willConnectToSession纯代码初始化 UIWindow,并设置显示的第一个控制器。...UIView与UIViewController 初步印象 iOS 开发,一个界面就是一个 UIViewController(视图控制器),界面上显示的内容就是 UIView视图)。...所有放在界面上的 UI 控件都放在 UIViewController 的 UIView 之上, UIViewController 的代码可以通过self.view属性获取它。...UIView添加到UIViewController的View.png UIView的容器概念 UIView 可以放其他的 UIViewUIView层次关系(平级与包含)。...exchangeSubviewAtIndex:将2个位置的视图互换。 演示UIView与UIViewController Storyboard 注意左侧面板的视图层次结构

2.8K40

View编程指南(三)

UIView类包含一个tag属性,您可以使用它来为各个view对象添加一个整数值。 您可以使用tag唯一地标识view层次结构的view,并在运行时执行对这些view的搜索。...每个view的window属性包含当前显示view的window(如果有的话)。 由于view层次结构的root view没有父view,因此其superview属性设置为nil。...但是,隐藏的view会参与与view层次关联的自动调整和其他布局操作。因此,隐藏view通常是从view层次结构删除view的一种方便的替代方法,特别是如果您计划在不久的将来再次显示view时。...定位View Hierarchy的view view层次结构定位view有两种方法: 将指针存储适当位置的任何相关view,例如拥有view的VC。...对于view层次结构的每个view,将该view的autoresizingMask属性设置为适当的值是处理自动布局更改的重要部分。

1.7K30

Core Animation Programming

What's UIViewiOS开发,这个使用频率非常高的控件,同时iOS 所有原生的视图都是由UIView派生而来....视图屏幕上可以是一个矩形块,它能够拦截类似鼠标点击或者触摸手势等用户交互方式. 并且层级关系上可以互相嵌套,一个视图可以管理它所有的子视图的位置等.开发项目过程,这是非常常见的一个使用场景....Core Animation的类层次结构图中,可以发现图层类(LayerClasses) 是Core Animation 的核心基础....和UIView 一样,CALayer 也是有自己的父图层类,以及同样拥有子图层类的集合. 它构成了一个图层树的层次结构....UIView 与 CALayer 平行的层级关系 每个UIView 都会有一个CALayer 实例图层属性.也就是backing layer.UIView 的职责就是创建并管理这个图层.用来确保当前子视图层级关系添加或者移除的时候

1.1K10

翻译_iOS视图编程指南(View Programming Guide for iOS)之视图和窗口体系

无论你是使用系统视图还是自定义视图,都需要理解由UIVIew和UIWindow类所提供的基础结构。这些类提供复杂的设施来管理视图的布局和显示。...视图结构的基本原理#### 表面上,你可能想去做的就是处理视图对象(UIView的子类).一个视图对象规定了视图上矩形区域,并且矩形区域上处理绘画和触摸事件。...视图层次和子视图的管理#### 一个视图呈现自身内容之外,还可以作为其他视图的容器。当一个视图包含另一个视图时,两个视图间的父子关系就创建出来了。关系,孩子视图就是子视图,父亲视图就是超视图。...每一个父视图都将子视图存储一个有序的数组,这个顺序影响着每个子视图可视度。如果两个兄弟视图相互重叠,最后加入的视图将会最先显示。 父子视图的关系也影响着一些视图行为。...另一些影响子视图的变化有:隐藏父视图、改变父视图的透明度、将数学变化应用到父视图的坐标系统视图层次管理视图决定着你的应用是如何响应事件的。

99040

iOS 事件处理机制与图像渲染过程

UIView和CALayer是一个平行的层级关系,每一个UIView都有一个CALayer实例的图层属性,也就是所谓的backing layer,视图的职责就是创建并管理这个图层,以确保当子视图层级关系添加或者被移除的时候...UIView 的 Layer 系统内部,被维护着三份同样的树形数据结构,分别是: 图层树(这里是代码可以操纵的,设置属性的最终值会立刻在这里更新); 呈现树(是一个中间层,系统就在这一层上更改属性,进行各种渲染操作...比如一个动画是更改alpha值从0到1,那么逻辑树上此属性会被立刻更新为最终属性1,而在动画树上会根据设置的动画时间从0逐步变化到1); 渲染树(其属性值就是当前正被显示屏幕上的属性值); CADisplayLink...当一个触摸事件到来时,RunLoop 被唤醒,App 的代码会执行一些操作,比如创建和调整视图层级、设置 UIView 的 frame、修改 CALayer 的透明度、为视图添加一个动画;这些操作最终都会被...方法后,这个 UIView/CALayer 就被标记为待处理,并被提交到一个全局的容器去。

5.5K100

ViewController及View的生命周期1. 起因2. Controller的生命周期3. View的生命周期4. 内存警告

这让永远都只viewDidLoad写作的童鞋们情何以堪吶。 这些其实都和生命周期有关,和viewController以及view的各种加载顺序有关。这篇文章就小小撸一下这中间的关系和顺序。 2....Default does nothing 对象的视图已经消失、被覆盖或是隐藏时调用. UIViewController类提供一些方法,用来判断为什么view外观发生更改。...调用addSubivew:成功后会给该视图发送didAddSubivew:回调,触发UIView的子类新增视图时执行其他操作。...willMoveToWindow:视图移动前发出的回调。 willRemoveToSubview:回调通知父视图视图即将被删除 4. 内存警告 首先要判断一下,当前view有没有被显示。...如果正在显示,做处理,会让用户感觉很不舒服。 更严谨一点,还需要判断view是否已经加载。如果没有加载,就不需要干掉了。 实际开发为了写的少点,都会写在基类控制器

1.3K30

UIViewController生命周期

这需要我们loadView 方法,通过编程创建自己的视图层次,并且把把根视图赋值给UIViewController的view属性。...此时整个视图层次(view hierarchy)已经被放到内存。 无论是从nib文件加载,还是通过纯代码编写界面,viewDidLoad方法都会执行。...合创建一些附加的view和控件 3、ViewWillAppear 视图加载完成,并即将显示屏幕上时,会调用viewWillAppear方法,在这个方法里,可以改变当前屏幕方向或状态栏的风格等。...在这个方法,还可以对视图做一些关于展示效果方面的修改。...根据window显示级别优先原则,级别高的会显示最上层,级别低的在下面,我们程序正常显示的view最底层; 六、APP架构 七、整体架构

1.8K10

iOS 常用设计模式汇总

例如,模型对象可能是表示游戏中的角色或地址簿的联系人。用户视图层中所进行的创建或修改数据的操作,通过控制器对象传达出去,最终会创建或更新模型对象。...模型对象更改时(例如通过网络连接接收到新数据),它通知控制器对象,控制器对象更新相应的视图对象。 1.1.2视图对象 视图对象是应用程序中用户可以看见的对象。...视图对象知道如何将自己绘制出来,并可能对用户的操作作出响应。视图对象的主要目的,就是显示来自应用程序模型对象的数据,并使该数据可被编辑。尽管如此, MVC 应用程序视图对象通常与模型对象分离。...iOS应用程序开发,所有的控件、窗口等都继承自 UIView,对应MVC的V。...1.1.3控制器对象 应用程序的一个或多个视图对象和一个或多个模型对象之间,控制器对象充当媒介。控制器对象因此是同步管道程序,通过它,视图对象了解模型对象的更改,反之亦然。

1.7K10

UIview

UIView UIView类定义了一个矩形区域屏幕上和管理内容的接口。 Overview 在运行时,一个视图对象处理任何内容的呈现它的面积,还处理任何与内容交互。...视图可以使用addGestureRecognizer(_)方法安装手势识别器来处理常见的手势。 视图可以嵌入其他视图,创建复杂的视觉层次。...该方法的实现负责绘制视图的内容到当前图形上下文,这是系统设置的自动调用该方法之前。这将创建一个静态视图的可视化表示的内容可以显示屏幕上。当视图的实际内容发生变化时,你有责任通知系统视图需要重绘。...Animations 几个视图属性可以更改该对象animated,改变属性创建一个动画,这种改变在很短的时间内传达给用户。...因此,你应该叫UIView类的方法从代码运行您的应用程序的主线程。这可能不是严格必需是唯一一次创建视图对象本身,而是所有其他操作应该发生在主线程。

69210

IOS 与ANDROID框架及应用开发模式对照一

视图控制器对象提供基础结构,来管理内容相关的视图并协调视图显示与隐藏。视图控制器还用来管理应用程序视图的子层次结构。...用于主屏幕上呈现内容,但应用程序可能会有另外一个窗体,将内容显示在外接显示器上。 要更改您的应用程序的内容,需使用视图控制器,来更改在相应窗体显示视图。...通过直接将 UIView(或它的子类)子类化。您还能够定义自己的自定视图。 除了包含视图和控制以外,应用程序还能够将 Core Animation 层并入其视图和控制分层结构。...应用程序所显示视图,会排列成层次结构(直观上基于包括)。此模式同意应用程序将单个视图和合成视图同等对待。 层次的根部为一个窗体对象;根部下面的每一个视图,都有一个父视图,以及零个或多个子视图。...父视图包括子视图视图层次是画图和事件处理的结构性组件。 IOS框架的模型对象能够由UIKit框架提供的UIDocument对象来实现文档类型的数据模型。

1K20

iOS 知识点回顾(三)

可添加完成的代码块,操作完成后执行。 添加操作之间的依赖关系,设定操作执行的优先级,方便的控制执行顺序;设置最大并发数。 可以很方便的取消一个操作的执行。...全局区/静态区(staic):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量一块区域, 未初始化的全局变量和未初始化的静态变量相邻的另一块区域。程序结束后有系统释放。...自动释放池的结构 __AtAutoreleasePool 实际是一个结构体,在内部首先执行objc_autoreleasePoolPush(),然后调用objc_autoreleasePoolPop...卡顿产生的原因 卡顿产生的原因 VSync 信号到来后,系统图形服务会通过 CADisplayLink 等机制通知 App,App 主线程开始 CPU 中计算显示内容,比如视图的创建、布局计算...,尽可能将多张图片合成一张进行显示 GPU能处理的最大纹理尺寸是4096x4096,一旦超过这个尺寸,就会占用CPU资源进行处理,所以纹理尽量不要超过这个尺寸 尽量减少视图数量和层次 减少透明的视图(alpha

71210

IOS开发系列——UIView专题之二:动画篇【整理,部分原创】

2UIView动画 2.1概述 UIView视图的动画功能,可以使更新或切换视图时有放缓节奏、产生流畅的动画效果,进而改善用户体验。...UIView可以产生动画效果的变化包括: •位置变化:屏幕上移动视图。 •大小变化:改变视图框架(frame)和边界。 •拉伸变化:改变视图内容的延展区域。...•改变透明度:改变视图的alpha值。 •改变状态:隐藏或显示状态。 •改变视图层次顺序视图哪个前哪个后。 •旋转:即任何应用到视图上的仿射变换(transform)。...可能的值定义UIViewAnimationTransition。 view 需要过渡的视图对象。...cache 如果是YES,那么开始和结束图片视图渲染一次并在动画中创建帧;否则,视图将会在每一帧都渲染。例如缓存,你不需要在视图转变不停的更新,你只需要等到转换完成再去更新视图

1.3K10
领券