开发语言 Swift 或者 Objective-C(本教程基于 Swift 5.x)。 开发者账号 个人 99 $/年 公司 99 $/年 企业 299 $/年 iOS系统四个层次 ?...Cocoa Touch 层为应用程序开发提供了各种有用的框架,并且大部分与用户界面有关,它负责用户在 iOS 设备上的触摸交互操作以及一些其他的关键功能。 创建第一个iOS项目 ?...Storyboard 中的界面与ViewController.swift之间的联系(一个界面与一个类文件关联)。...frame:相对父视图的坐标和大小。 bounds:相对自身的坐标和大小,所以 bounds 的 x 和 y 永远为0。 center:相对父视图的中心点坐标。...tag:标记(Int 类型,默认等于0),设置后,可以通过所在容器View.viewWithTag方法拿到这个视图。 title:标题。 superview:父视图。 subviews:所有子视图。
Objective-C: UIWindow* w = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; Swift(iOS8...): let w = UIWindow(frame: UIScreen.mainScreen().bounds) Swift(iOS9): // it’s sufficient to instantiate...(spuerview)的原点导致子视图(subview)位置发生变化 (本例中子视图向左上移动) UIView* v1 = [[UIView alloc] initWithFrame:CGRectMake...CGAffineTransformMakeRotation(45 * M_PI/180.0); 效果: 例2: 缩放变换 v1.transform = CGAffineTransformMakeScale(1.8, 1); 效果: 例3: 子视图先平移后旋转...CGAffineTransformMakeTranslation(100, 0); v2.transform = CGAffineTransformRotate(v2.transform, 45 * M_PI/180.0); 效果: 例4: 子视图先旋转后平移
视图内容填充模式 UIViewContentMode 视图动画过渡效果 UIViewAnimationTransition 视图自动调整大小方式 UIViewAutoresizing 视图的动画选项 ...调整与superView左边的距离,保证与superView右边的距离不变. 52 UIViewAutoresizingFlexibleWidth = 1 调整与superView的右边距离,保证与superView左边的距离不变. 54 UIViewAutoresizingFlexibleTopMargin = 1 调整与superView顶部的距离,保证与superView底部的距离不变. 55 UIViewAutoresizingFlexibleHeight = 1 << 4,//...; 226 227 /** 返回“最佳”大小适合给定的大小 */ 228 - (CGSize)sizeThatFits:(CGSize)size; 229 /** 调整为刚好合适子视图大小 */ 230
中间两条上下交叉的线表示,此视图的高度与宽度是否随着父视图的变化而按比例变化 Autoresizing 举个例子: 当我们将左边和上面虚线变成实线时,代表子控件和父控件在这个方向上的间距被固定...当我们点击子视图内部的虚线时,同样也变为实线,代表子视图的宽度或者高度被固定了 Autoresizing 代码中使用Autoresizing @property(nonatomic) BOOL autoresizesSubviews...,作用是自动调整子控件与父控件中间的margin(间距)或者子控件的宽高。...UIViewAutoresizingFlexibleRightMargin.gif UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight 自动调整...可以满足大部分简单的自动布局需求,可是它有一个致命的缺陷,它只能设置子视图相对于父视图的变化,却不能精确这个变化的度是多少,因此对于复杂的精准的布局需求,它就力不从心了
当我们点击周围四条虚线时,虚线会变成实线,代表子控件和父控件在这个方向上的间距被固定了。当我们点击子视图内部的虚线时,同样也变为实线,代表子视图的宽度或者高度被固定了。...举个例子:当我们点击最左边的虚线时候,代表子视图距离父视图左边的间距被固定了,而其他三个方向的距离和宽高会随父视图的缩放二缩放。...如果UIView设置了autoresizesSubviews,那么他的子控件的bounds如果发生了变化,他的子控件将会根据子控件自己的autoresizingMask属性的值来进行调整。...autoresizingMask是一个枚举值,作用是自动调整子控件与父控件中间的margin(间距)或者子控件的宽高。默认其枚举值是UIViewAutoresizingNone。...storyBoard上的autoresizing.gif 注意:Autoresizing只能设置父子视图之间的关系,也就是说,Autoresizing只能控制子视图和父视图之间的位置/大小关系。
IOS10 Swift3 Xcode8 1 应用程序的5个阶段,放在 AppDelegate.swift application:didFinishLaunchingWithOptions 当应用程序载入后执行该方法...2 视图控制类: ViewController.swift Assets.xcassts 图片资源 LauchScreen.storyboard 首先加载的视图 Info.plist 配置文件...3 swift用new group组来分类,但不是实际的子文件夹 新建 cocoa touch class文件:输入CustomerViewController作为控制器,父类为UIViewController...,语言swift 4 创建playgroup 创建Playground环境非常简单,在Xcode欢迎界面中,点击【Get started with a playground】选项,即可创建一个Playground
相信很多同学都知道在iOS7之后调整导航栏两侧按钮距离左右间距,其实就是在左右barButtonItem的数组中添加一个宽度为负的占位item。...[view superview] !...可以用xcode查看视图层次,以方便理解。...现在有一个终极解决方案: UINavigationBarContentView平铺在导航栏中作为iOS11的各个按钮的父视图,该视图的所有的子视图都会有一个layoutMargins被占用,也就是系统调整的占位...,我们只要把这个置空就行了.那样的话该视图下的所有的子视图的空间就会变成我们想要的那样,当然为了保险起见,该视图的父视图也就是bar的layoutMargins也置空,这样 整个bar就会跟一个普通视图一样了
details/80521257 之前的一篇文章(https://www.jianshu.com/p/9563f5b646d9)讲过使用Masonry布局让Cell的高度实现自适应,其实这就是通过子视图撑起了父视图...今天再通过简单的代码来看下子视图如何通过Masonry的布局来撑起父视图的(让父视图的大小实现自适应)。 代码: ?...可复制代码: UIView* superView = [[UIViewalloc]init]; [self.viewaddSubview:superView]; UIView* subView =...).offset(10); make.top.equalTo(superView.mas_top).offset(10); make.right.equalTo(superView.mas_right...对于这样的高度根据文字内容变化的视图我们就能很好地实现了。
这样我们就可以在 UIView 中直接调用这些函数来进行视图的约束设置了。...这个写法灵感来自GitHub - specta/expecta: A Matcher Framework for Objective-C/Cocoa。...源码的 swift/stdlib/public/core/Policy.swift 文件里,在线看地址是:https://github.com/apple/swift/blob/a7ff0da33488b9050cf83df95f46e5b9aa2348d5.../stdlib/public/core/Policy.swift 。...mas_closestCommonSuperview 方法去找两视图的共同父视图,不然如果只设置了高宽,就把约束加到当前视图上,其它情况就加到当前视图的父视图上。
global function 由于历史原因,Swift 标准库中仍然具有相当多的公共全局功能,其中一些功能至今仍然非常有用。让我们看一下zip()和dump()之类的函数。...假设我们要更改子视图及其所有父视图的背景颜色。也许您会像这样建立一个while循环: var currentView: UIView? = self while currentView !...superview } 这是sequence()的最佳用例,因为此函数的目的是为您提供一个序列,该序列反复应用特定的闭包。由于此方法的递归内容 currentView = currentView?....superview 始终相同,因此我们可以使用sequence()将其转换为简单的for循环: for view in sequence(first: self, next: { $0.superview...译自 Useful Global Swift Functions
2)Cocoa Touch的新功能 - 202 ?...他潜入渲染循环,因为它处理在屏幕上获取视图的各个部分。首先是updateConstraints确定是否需要和设置约束更新。其次,子视图的布局和设置。最后,如果需要,显示将绘制视图并刷新。...请注意内在内容大小和systemLayoutSizeFitting实际内容之间的区别。可以通过其内容文本或图像来了解前者的视图。后者从引擎中获取大小信息。...调用systemLayoutSizeFitting创建引擎实例,添加约束,解决布局,返回大小调整并删除引擎。这可能反复发生,增加了流失。还包括围绕文本测量和不可满足的约束消息的其他技巧。...在本次专题讨论Swift编程方法的讲座中,我们将介绍Dave使用for循环和while循环,然后通过合理使用算法来降低复杂性和代码大小。
1 简介 bounds是指这个view在它自己坐标系的坐标和大小 而frame指的是这个view在它superview的坐标系的坐标和大小区别主要在坐标系这一块。.... - (void) addConstraints: (NSArray *) constraints NS_AVAILABLE_IOS(6_0); 在使用自动布局之前要对子视图的布局方式进行调整...//设置子视图的宽度和父视图的宽度相同 [self.view addConstraint: [NSLayoutConstraint constraintWithItem: v1 attribute:...NSLayoutRelationEqual toItem: self.view attribute: NSLayoutAttributeWidth multiplier: 1.0 constant:0]]; //设置子视图的高度是父视图高度的一半...blog.csdn.net/liangliang103377/article/details/40082255 用Xcode在Storyboard界面配置自动布局要点: 1、对于一个视图内同级别的子视图
*)subview 参数 subview 被添加做子视图的视图对象 讨论 被子类重写用来执行额外的命令当子视图添加到接收者。...排列子视图;否则将不会做任何事情 sizeThatFits: 计算并返回一个最好的适应接收者子视图的大小 - (CGSize)sizeThatFits:(CGSize)size 参数 size... 接收者首选的尺寸 返回值 一个新的大小用来适应接收者子视图 讨论 默认的实现返回大小参数 子类重写这个方法用来返回特定视图的大小。...举个粒子,UISwitch返回一个修正过的大小,UIImageView返回图片的大小 这个方法并没有改变接收者的大小 sizeToFit 调整大小并移动接收者视图大小所以他包含了他的子视图 -...2.在容器视图中设置转换。 3.在容器视图中移除子视图。 4.在容器视图中添加子视图。 5.结束动画块。
image.png 前言: 师弟要毕业设计,就敲了swift版的计算器给他参考下。...0.25倍 make.width.equalTo(btn.superview!....snp.width).multipliedBy(0.25) //约束高度为父视图宽度的0.2倍 make.height.equalTo(btn.superview...textColor = UIColor.black //设置文字大小根据字数进行适配 inputLabel?....superview!.
1.没有子控件的UIView 显示过程: //(superview) - (void)willmovetosuperview:(nullable UIView *)newSuperview - (void...2.包含子控件的UIView 当增加一个子控件时,就会执行 didaddsuperrview,之后也会执行一次layoutsubview。...5、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件。...如果需要立即执行layoutsubview addSubview 每一个视图只能有唯一的一个父视图。...如果当前操作视图已经有另外的一个父视图,则addsubview的操作会把它先从上一个父视图中移除(包括响应者链),再加到新的父视图上面。
Masonry框架是Objective-C版本的,如果你的项目是Swift语言的,那么就得使用SnapKit布局框架了。...SnapKit其实就是Masonry的Swift版本,两者虽然实现语言不同,但是实现思路大体一致。...也就是子视图的top与父视图的top中间隔着10个pt。 1. 使用NSLayoutConstraint添加约束 下方这段代码就是给subView添加了一个相对于superView的Top约束。...参数toItem则指定的是约束相对的对象,在此是相对superView的,所以此处的参数是superView。第二个attribute参数就是指定superView的Top属性。...子啊添加约束是我们要判断是不是对约束的更新,如果是对约束的更新的话就先获取已经存在的约束并对该约束进行更新,如果被更新的约束不存在就进行添加。
基于 Swift 4 的兼容性,Xcode 9 使用同一个编译器来构建已有的 Swift 3 代码和最新的 Swift 4 代码。从此,数据迁移的节奏,您说了算。...Swift 4 得助于 Apple 领导的 Swift.org 开源社区, Swift 中的构建过程非常高速,同时,它也能生产出运行更快的 app 及体积更小的可执行文件。...Cocoa 和 Cocoa Touch 使用“模型-视图-控制器”模式构建,因此可以轻松地独立设计界面,不受实现方式的限制。...用户界面实际上是 Cocoa 或 Cocoa Touch 归档对象(保存为 .nib 文件),当 app 运行时,macOS 和 iOS 会自动在 UI 与代码之间建立关联。 ?...自动布局基于这样一种概念:界面中的每个对象均可定义约束条件,用于控制其对父视图和其他界面控件的响应。例如,当显示不同语言时,可以让按钮优先保持特定大小或扩展以容纳更大的文本。
前言 TangramKit是iOS系统下用Swift编写的第三方界面布局框架。...视图的尺寸和位置 视图的尺寸 视图的尺寸就是指视图矩形块的大小,为了表征视图的大小我们称在屏幕水平方向的尺寸大小为宽度,而称在屏幕垂直方向的尺寸大小为高度,因此一个视图的尺寸我们就可以用宽度和高度两个维度的值来描述了...上面曾经说过,在布局视图重新布局子视图时最终会调整子视图的bounds和center.那么这样就有可能会形成循环的重新布局,为了解决这种循环递归的情况,布局视图在layoutSubviews调用进行布局前设置了一个布局中的标志...比重类TGWeight TGWeight类的值表示尺寸或者位置的大小是父布局视图的尺寸或者剩余空间的尺寸的比例值,也就是说值的大小依赖于父布局视图的尺寸或者剩余空间的尺寸的大小而确定,这样子视图就不需要明确的指定位置和尺寸的大小了...也就是尺寸的大小是由子视图或者视图的内容共同决定的,这样视图的尺寸将依赖其内部的子视图的尺寸或者子视图内容的大小。
领取专属 10元无门槛券
手把手带您无忧上云