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

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

2 UIView接口说明 2.1 API接口说明 addSubview:     添加一个子视图到接收者并让它在最上面显示出来。...如果视图是nil,那么这个方法将会转换成基于窗口的坐标。否则视图和接收者都要属于同一个UIWindow对象。...否则视图和接收者必须都属于同一个UIWindow对象 返回值     The converted rectangle 转换过的矩形 convertRect:toView:     转换接收者坐标系中的矩形到其他视图...如果这个点位于接收者之外就返回nil 讨论         这个方法贯穿视图的层次发送pointInside:withEvent:消息到每一个子视图用来决定那个子视图需要接收触摸事件。...    一个子视图用来移动到它後面去 setNeedsDisplay     控制接收者的边界矩形被标记为需要显示 -(void)setNeedsDisplay 讨论     默认情况下,视图几何图形的改变自动重绘而不需要调用

70830

深入详解iOS适配技术

当我们点击周围四条虚线时,虚线会变成实线,代表子控件和父控件在这个方向上的间距被固定了。当我们点击子视图内部的虚线时,同样也变为实线,代表子视图的宽度或者高度被固定了。...举个例子:当我们点击最左边的虚线时候,代表子视图距离父视图左边的间距被固定了,而其他三个方向的距离和宽高会随父视图的缩放二缩放。...所以,storyboard和代码是相同的,无论什么视图,凡是可以通过storyboard进行设置的属性,都有与之对应的属性代码,我们也可以使用代码的方式实现。...superView左间距和上间距固定,宽高固定,右间距和底部间距随父控件的缩放而按比例缩放 ?...比如,给某个子控件A设置了左边距和右边距后,虽然没有明确指定子控件A的宽度,但是其左右边距一旦设置,那么宽度可以根据子控件A和父控件左右之间的边距自动推算出来。

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

    IOS基础知识第二季

    UIView是视图的基类 UIViewController是视图控制器的基类 12.每个应用至少一个窗口,UIWindow继承UIView 自动创建(xcode4.5之后) 13.UIScreen...addSubview添加子视图 insertSubview:atIndex:视图插入到指定索引位置 insertSubview:aboveSubview:视图插入指定视图之上 insertSubview...//设置tag属性 UIView *_view = [self.window viewWithTag:2];或者tag为2的视图 其他属性:子视图会继承父视图属性 alpha透明度0.0~1 backgroundColor...背景颜色 subviews子视图集合 hidden是否隐藏 superview父视图 multipleTouchEnabled是否开启多点触摸 userInteractionEnabled是否响应触摸事件...这样我们自定义的UIView需要重载dealloc方法进行内存释放 22坐标系统变换(动画使用) 视图缩放 UIView *_view = [self.window viewWithTag:110

    97060

    View编程指南

    如果子View是部分透明的,则来自两个view的内容在被显示在屏幕上之前被混合在一起。每个superview将其子view存储在有序数组中,并且该数组中的顺序也会影响每个子View的可见性。...相反,contentMode属性中的值决定是否缩放位图以适应新的边界,或者只是固定到View的一个角或边缘。...UIView类的许多属性都是可以动画的,也就是说,存在从一个值到另一个值的动画的半自动支持。要为其中一个动画属性执行动画,您只需执行以下操作: 告诉UIKit你想要执行一个动画。 更改属性的值。...换句话说,发生在superview bounds矩形之外的view的一部分中的触摸事件不会被传送到该view。 坐标系统转换 坐标系转换提供了一种快速方便地更改view(或其内容)的方法。...由于每个view都是绘制其内容,并将其子view相对于其bounds进行布局,所以在绘制和布局过程中可以忽略其superview的变换。 图展示了两种不同的旋转因素在渲染时如何组合。

    2.3K20

    IOS开发系列——UIView专题之五:常用开发技巧篇

    ,UIApplication会从事件队列中取出触摸事件并传递给key window(当前接收用户事件的窗口)处理,window对象首先会使用hitTest:withEvent:方法寻找此次Touch操作初始点所在的视图...:返回nil; •若返回YES,则向当前视图的所有子视图(subviews)发送hitTest:withEvent:消息,所有子视图的遍历顺序是从top到bottom,即从subviews数组的末尾向前遍历...,直到有子视图返回非空对象或者全部子视图遍历完毕; •若第一次有子视图返回非空对象,则hitTest:withEvent:方法返回此对象,处理结束; •如所有子视图都返回非,则hitTest:withEvent...如果一个子视图的区域超过父视图的bound区域(父视图的clipsToBounds属性为NO,这样超过父视图bound区域的子视图内容也会显示),那么正常情况下对子视图在父视图之外区域的触摸操作不会被识别...,因为父视图的pointInside:withEvent:方法会返回NO,这样就不会继续向下遍历子视图了。

    1.2K20

    iOS-屏幕适配实现(Autoresizing)

    Autoresizing 举个例子: 当我们将左边和上面虚线变成实线时,代表子控件和父控件在这个方向上的间距被固定 当我们点击子视图内部的虚线时,同样也变为实线,代表子视图的宽度或者高度被固定了...@property(nonatomic) UIViewAutoresizing autoresizingMask; //是一个枚举值,作用是自动调整子控件与父控件中间的margin(间距)或者子控件的宽高...注意:UIView的autoresizesSubviews属性为YES时(默认为YES),autoresizingMask才会生效,也就是说,当我们想要利用autoresizingMask指定某个控件和其父控件的关系时候...superView左间距和上间距固定,宽高固定,右间距和底部间距随父控件的缩放而按比例缩放 UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin.gif...可以满足大部分简单的自动布局需求,可是它有一个致命的缺陷,它只能设置子视图相对于父视图的变化,却不能精确这个变化的度是多少,因此对于复杂的精准的布局需求,它就力不从心了

    27610

    UG常用快捷键

    每个序列步骤可以包含一个组件、一个子组、一个摄像步骤(视图方位)或一个运动(以及构成该运动的动作): o 如果希望将拆装组件作为第一步,则选择该组件,然后从工具条、图形窗口弹出菜单、“插入”下拉菜单或从...o 如果希望将拆装一个子组作为第一步,则选择一个现有子装配或一组组件,然后选择“做为组拆卸”或“共同拆卸”。...o 如果希望在显示一个序列步骤之前定向或缩放一个视图,则修改视图(例如,使用平移和缩放选项),然后选择“摄像位置”。 o 如果希望显示选定组件移动到位置,则选择“运动分析”。...由一个现有子装配组成的一个子组被放入到以该子装配命名的一个序列步骤中。 由一个组件集构成的子组被放入名为“序列组 x”的一个序列步骤中,其中 x 是一个整数,代表其创建次序。 8....如果希望组装一个子组,则选择它,然后选择“做为组装配”或“一起装配”。 在装配已拆装的组件时要小心。

    3.6K40

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

    在视图层次体系结构中的顶层视图的尺寸和屏幕的尺寸是一致的,为了描述这个特殊的顶层视图我们将这个顶层根视图称之为窗口,窗口的尺寸和屏幕的尺寸一样大,同时窗口是一切视图的容器视图。...,直到转换到在窗口中的位置为止。...框架布局里面的子视图只跟框架布局视图的边界建立约束关系。框架布局和Android中的框架布局FrameLayout提供一样的功能。...根据子视图可以浮动的方向浮动布局分为垂直浮动布局和水平浮动布局。浮动布局和HTML/CSS中的float定位实现了相同的功能。...的派生类因为里面的布局方法不相同,而导致子视图的位置和尺寸的计算方法不同,从而得到了我们想要的效果。

    2.2K30

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

    1 简介         bounds是指这个view在它自己坐标系的坐标和大小 而frame指的是这个view在它superview的坐标系的坐标和大小区别主要在坐标系这一块。...,从外部传入//衡量标准; views:就是上面所加入到NSDictionary中的绑定的View;         在这里要注意的是AddConstraints  和AddConstraint之间的区别...//设置子视图的宽度和父视图的宽度相同 [self.view addConstraint: [NSLayoutConstraint constraintWithItem: v1 attribute:..., 有一个良好的自动布局框架, 则会让我们事半功倍....:     1、对于一个视图内同级别的子视图,要配就全部都配置成自动布局;     2、对于每个视图,无法上下左右四个方向上的设置,一定要设置全;     3、对于TableView等大型视图控件,默认顶行就行

    34940

    如何把设计图自动转换为iOS代码? 在线等,挺急的!

    作为一个 iOS开发爱好者,这是我很感兴趣的一个话题.最近也确实有了些许灵感,也确实取得了一点小成果,和大家分享一下.欢迎感兴趣的iOS爱好者能和我一起研究讨论!...这是一个可以节省 70% 工作量的话题 我觉得,如果真的能把一张设计图自动转换为代码,任何开发工程师都会感兴趣的.单以 iOS 应用为例, 在一个最常用的MVC架构的APP中,主要的代码,无非就是集中于...尽管作为一名iOS开发人员,我依然对苹果公司提供的开发技术及其发展方向持谨慎和保守态度.前一段时间,尝试使用 Xib来布局视图,遇到一些坑,但是熟悉之后,也确实比原来单纯基于绝对位置的纯代码布局更灵活些...,下面是我研究的成果: 上图,是一个Xib模块,其中的色块部分,嵌套的是另一个Xib模块.最终显示是,色块会自动被对应的Xib模块替代....考虑到多屏幕尺寸,UI设计图等比缩放的常用情况,我分享一个可以唯一确定UI元素的方案: [subView makeConstraints:^(MASConstraintMaker *make) {

    1.4K60

    Unity基础教程系列(新)(六)——Jobs(Animating a Fractal)

    这是因为当我们克隆一个分形去创造它的第二个子代时,我们已经给了它第一个子代了。这个子对象现在也被克隆了,因为Instantiate复制了传递给它的整个游戏对象层次结构。...(2D 分形) 我们还可以添加一个向下偏移的子节点吗? 是的,但这仅对分形的根部分有意义,因为在所有其他情况下,子节点最终都将隐藏在其父母的内部。为简单起见,我不会专门给根部分多创建一个子节点。...3 程序绘制 由于我们的分形目前具有扁平的对象层次结构,因此它的结构设计与我们之前的教程的视图相同:单个对象具有许多几乎相同的子对象。...为此,首先创建一个用于旋转和缩放的3×3矩阵,然后通过旋转调用float3x3,然后将缩放因子分解为矩阵。...但是,当我们为每个部分分配五个子节点时,让我们尝试将批次数设为5。 ? 这进一步将我的平均更新时间减少到1.7ms。使用较大的批处理数量并不能进一步改善,甚至使速度变慢,因此我将其保留为5。

    3.6K31

    iOS动画-CALayer基础知识

    视图的的职责就是创建并管理这个图层,以确保子视图在层级关系中添加或者被移除的时候,它们的关联图层也同样对应在层级关系树当中有相同的操作。...contentsRect (CGRect) 允许在图层边框里显示寄宿图的一个子域 contentCenter (CGRect) 定义一个固定的边框和一个在图层上可拉伸的区域 三、UIView方法绘制自定义寄宿图...frame&&bounds.png 上图对原有视图做了旋转变换,之后的frame实际上代表了覆盖在图层旋转之后的整个轴对齐的矩形区域,此时frame的宽和高和bounds不再一致了。...;但这时候我们又不得不考虑一个问题:修改锚点可以让我们的动画围绕非中心点旋转,但是这也改变了原有视图的位置frame,这是我们不想要的结果,该如何解决呢?...(或视图)坐标系下的点或者矩形转换为另一个图层(或视图)坐标系下的点或者矩形;开发过程中我们通常操作的对象都是视图,所以下面以视图为例简单演示其用法:首先创建添加两个宽高都是100*100的橙色、紫色视图在控制器的

    1.9K50

    View编程指南(三)

    确保对象被保留和正确释放的最好方法是使用声明的属性。 tag是减少硬编码依赖性并支持更加动态和灵活的解决方案的有用方法。你可以使用它的tag来定位它而不是存储一个指向view的指针。...移动、缩放、旋转View 每个view都有一个关联的affine transform,可以用来移动,缩放或旋转view的内容。...即使在每种情况下旋转和平移的数量是相同的,但是变换的顺序影响最终的结果。 此外,您添加的任何转换都将应用于相对于view的center。 因此,应用旋转因子围绕其中心点旋转view。...缩放view会更改view的宽度和高度,但不会更改其center. View Hierarchy中转换坐标 在许多情况下,特别是在处理事件时,应用程序可能需要将坐标值从一个参照系转换为另一个参照系。...如果此属性设置为YES,则该view使用每个子view的autoresizingMask属性来确定如何调整和定位该子view。对任何子view的大小更改会触发嵌入式子view的类似布局调整。

    1.8K30

    addSubView需要注意的几个点为什么要在addsubview:一个view对象后,release它?

    译:增加一个视图到接收者的子视图列表中。 - (void)addSubview:(UIView *)view Parameters view The view to be added....译:view参数代表被增加的view,这个view会被它的接收者retain一次(即引用计数+1)。增加完成之后,这个view将出现在接收者的其他子视图的上面。...ps:关于子视图的出现的层次的问题,可以从这些子视图被保存的数据结构来探寻答案 ,每个视图都有个数组的属性,subviews,这个就是保存的它的子视图的引用。...而这个数组的顺序就是代表了各个子视图被加入时的顺序。index=0 的就是最先被加入进去的,以此类推。所以,索引值越高的视图越不容易被覆盖。...ps:在removeFromSuperview里已经说过,其实视图直接的操作往往牵涉到两个方面的操作,一个是视图的数据结构,一个是响应者链。当然,addsubview也不例外。

    1.4K100

    小窗播放视频的原理和实现(上)

    例如,一个窗口的Z轴坐标大小要考虑到它的窗口类型,以及它与系统中的其它窗口的关系[2]。...它处于窗口的UI布局完成之后,窗口的UI绘制之前。这是因为窗口的UI布局完成之后,各个子视图的大小和位置才能确定下来,进而才能确定SurfaceView的透明区域的位置和大小。...从顶层视图开始,从上到下收集每一个子视图所要设置的区域,最终收集到的总透明区域并保存在ViewRootImpl类的成员变量mTransparentRegion中。...然后调用每一个子视图的成员函数gatherTransparentRegion来继续往下收集透明区域。...2.4、SurfaceView的绘制 SurfaceView虽然具有独立的Surface,不过它仍然是宿主窗口的视图结构中的一个结点,因此,它仍然是可以参与到宿主窗口的绘制流程中去的。

    11K180

    iOS界面布局之二——初识autolayout布局模型

    二、autolayout的设计思想     正如storyboard的设计目的是为了让开发者将更多的精力投入到逻辑实现而不是界面布局一样。...to Superview:与父视图左边界的约束 Trailing Space to Superview:与父视图右边界的约束 Top Space to Superview:与父视图上边界的约束 Bottom...Space to Superview:与父视图下边界的约束 Widehs Equally:视图等宽约束 Heights Equally:视图等高约束 2、网上的一个很简单的约束例子     了解了上面的几种约束...3距离父视图左边20px,右边20px (5)1和2水平间距20px (6)1与3垂直间距20px (7)1和2距离父视图上边距50px (8)3距离父视图下边距20px (9)3与1和2的高度一样 通过上面的约束...这就是我们想要的结果了。 3、自动布局的几种对其方式     在xcode导航的Editor菜单中,还有一个子菜单,Align,这里面的选项可以为控件添加对其约束: ?

    1K30

    Masonry -- 使用纯代码进行iOS应用的autolayout自适应布局

    #import "Masonry.h" 使用 初始Masonry 这是使用MASConstraintMaker创建的约束: /* 注意:view1应首先添加为某个视图的子视图,superview是一个局部变量...如果你给这些属性传递一个常量, Masonry会自动将它们转换为相对于其父视图的相对值: //creates view.left = view.superview.left + 10 make.left.lessThanOrEqualTo...left或者top的multiplier是没有意义的,因为父视图的left和top总为0....如果你需要一个视图随着父视图的宽度和高度,位置自动变化,你应该同时指定 right,bottom,width,height与父视图对应属性的比例(基于某个尺寸下的相对位置计算出的比例),并且constant...References 引用 你可以把 Masonry 语法返回的约束或约束数组,存储到一个局部变量或者类的属性中,以供后续操作某个约束. // 声明属性 @property (nonatomic, strong

    2.1K50
    领券