视图的frame、bounds、center属性仅仅是存取方法,当操纵视图的frame时,实际上是在改变视图对应的CALayer的frame, 不能独立于图层之外改变视图的frame....frame的值实际指的是图层旋转之后整个轴对齐的矩形区域。此时frame的宽高可能和bounds的宽高不一致: ? ---- 2.锚点 默认来说,anchorPoint位于图层的中点。...创建4个UIImageView并设置好约束(都是居中显示)。 ? 我们用NSTimer来更新闹钟,使用视图的transform属性来旋转钟表。...位于父图层的左上角,但在 Mac OS 中,通常位于左下角。...首先我在SB中设置两个视图,如下图: ? 如果我们不做任何操作,运行后,两个视图显示的顺序就是我们现在设置的这样。
View.layer.shadowOffset实现 原文地址 https://blog.csdn.net/z929118967/article/details/93181646 I 、去掉TabBar的顶部黑线...= CGSizeMake(kAdjustRatio(0), kAdjustRatio(0));//设置阴影的偏移量,阴影的大小,x往右和y往下是正 tmpView.layer.shadowRadius...去掉TabBar的顶部黑线 [self setBackgroundImage:[UIImage createImageWithColor:[UIColor clearColor]]]; [self...,阴影的大小,x往右和y往下是正 tmpView.layer.shadowRadius = kAdjustRatio(5);//设置阴影的圆角,//阴影的扩散范围,相当于blur radius,...也是shadow的渐变距离,从外围开始,往里渐变shadowRadius距离 } III、小知识点 3.1 避免selectedViewController视图被TabBar挡住 错误约束
UIScrollerView常见属性 CGPoint contentOffset 这个属性用来表示UIScrollerView滚动的位置(其实就是内容左上角与ScrollerView左上角的间距值...contentSize 这个属性用来表示UIScrollerView内容尺寸,滚动范围(能滚多远) UIEdgeInsets contentInset 这个属性能够在UIScrollerView的四周增加额外的滚动区域...*)scrollView{ return [UIView new]; } ScrollerView缩放的代理回调 //滚动视图在和方法的实现结束时调用此方法,但仅在请求动画时调用setContentOffset...:(UIScrollView *)scrollView{ NSLog(@"滚动视图在完成滚动到内容顶部时发送此消息"); } UIScrollerView分页(电商与新闻常用) 简单示例.gif...{ [super viewDidLoad]; UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 64, self.view.bounds.size.width
时,其内部会自动创建CALayer图层对象(即UIView的关联图层),UIView调用drawRect:方法进行绘图,并且将所有的内容绘制到自己的图层上,绘制完毕后,系统会将图层拷贝到屏幕上,于是就完成了...图层与视图的底层关系.png UIView、UIColor、UIImage都定义于UIKit框架中; CALayer定义在QuartzCore框架中的CoreAnimation中; CGImageRef...CALayer的contents,却会得到一个编译错误。...UIView属性 CALayer属性 属性说明 frame frame 表示相对于其父视图的坐标位置 bounds bounds 表示相对于其自身的坐标位置,{0,0}通常是其左上角 center position...换句话来讲就是:position是当前layer的anchorPoint在superLayer中的位置。
基本视图 在Main.Storyboard中,我们已经提到ARSCNView默认放在视图控制器的顶部。但是,如果没有UIView作为基础,则仅限于您可以在用户界面上执行的操作。...调整大小以填充整个视图控制器。 约束 然后,单击Storyboard编辑器左下角的第四个图标,将新约束添加到场景视图中。定义约束以确保您的用户界面适应不同的屏幕尺寸或设备方向。...设置为0的顶部,左,右和底部。确保它们都被约束到视图而不是安全区域,然后单击Add Constraints。安全区域是凹口下方和主页指示器上方的边距,通常是屏幕的可见部分。...此外,请确保未选中“ 限制到边距”。 如果被限制在安全区域而不是超级视图,这就是看起来的样子,显然,这看起来并不好看。 ?...从对象库中,将UIButton拖动到场景视图的顶部。在“ 属性”检查器中,删除“ 按钮”标题并将图像设置为“ 按钮/添加”。 约束到底部20但这次是在安全区域,并取消选中Constrain到边距。
在一般中小规模的公司中,开发人员往往都是身兼数职。不仅要编写代码还要参与到算法的设计中去,甚至参与到动画原型的设计中去。所以弄清楚动画设计过程中的不同角色,以及搞清楚动画的分析过程是非常有必要的。...在iOS视图中,左上角为视图的原点(0,0),水平向右为x轴递增方向,竖直向下为y轴递增方向,只有当View视图位于手机屏幕展示坐标系之内,大家才能看到(虚线区域内控件不可见),否则登录按钮是不可见的。...表1 6S下QQ图标移动效果:QQ图标x、y坐标随时间变化关系表 3.动画结束阶段 在动画效果结束之后没有触发新的回调事件,只是更新了当前登录按钮的最后位置,所以图片最终停留在视图层的中间位置。...,frame的x坐标和y坐标相对于父控件的原点来计算,而bounds一般只能对width、height进行操作,它的x、y坐标只相对于自身而言,center描述的是x、y信息,即UIView的中心位置。...通过以上分析可以知道,可以通过x、y坐标修改UIView的移动位置,还可以通过修改width或者height来修改UIView的拉伸、收缩效果。
UIView是UIKit框架里面最基础的视图类。UIView类定义了一个矩形的区域,并管理该矩形区域内的所有屏幕显示。 控件 ?...let view = UIView(frame:CGRect(x:40, y:80,width:240, height:240)) view.backgroundColor = UIColor.black...let touchView = UIView(frame:CGRect(x:60, y:60,width:200, height:200)) touchView.backgroundColor = UIColor.black...coder aDecoder:NSCoder) { fatalError("init(coder:) has not been implemented") } } 在ViewController中调用...image.png 视图嵌套 ? image.png
4、创建预览层 5、设置扫描区域 实现 从上面的描述看,除了预览层,其他的和UI界面似乎没什么关系,但是实际开发中,扫描界面一般都是设计的比较人性化的,如支付宝、微信等,中间都有一个小框,有个线上下扫...(宽度一致) */ @property (weak, nonatomic) IBOutlet NSLayoutConstraint *scanViewH; /** * 扫描线的顶部约束值 */...UIView动画中修改约束是没效果的,需要在设置完约束以后,加上[self.view layoutIfNeeded];。...2、设置扫描区域,也就是设置AVCaptureMetadataOutput的rectOfInterest属性,它是一个CGRect类型,但是它的四个值和传统的不一样,是(y,x,高,宽)且是比例值,取值范围为...那么有两种方案,第一种需要自己计算具体位置的比例,如代码中注释的那些。
这需要我们在loadView 方法中,通过编程创建自己的视图层次,并且把把根视图赋值给UIViewController的view属性。...2、ViewDidLoad loadView方法执行完之后,就会执行viewDidLoad方法。此时整个视图层次(view hierarchy)已经被放到内存中。...比如可以移除一些视图,修改约束,加载数据等。...4、viewWillLayoutSubviews 即将开始子视图位置布局 5、ViewDidLayoutSubviews 用于通知视图的位置布局已经完成 6、ViewDidAppear 当viewWillAppear...在这个方法中,还可以对视图做一些关于展示效果方面的修改。
在iOS开发中,我们知道有一个共同的基类——NSObject,但是对于界面视图而言,UIView是非常重要的一个类,UIView是很多视图控件的基类,因此,对于UIView的学习闲的非常有必要。...2个 属性 8个 UIView的各类扩展 视图几何相关的扩展 UIView (UIViewGeometry),主要定义了视图上位置和区域相关一些属性和方法 视图层次结构相关的扩展 UIView (UIViewHierarchy...,比喻第一视图、基线视图、视图大小等等 视图约束适应尺寸相关的扩展 UIView (UIConstraintBasedLayoutFittingSize),主要用于获取持有约束的视图大小及其区域内的视图大小...; 245 /** 插入子视图(将子视图插入到subviews数组中index这个位置) */ 246 - (void)insertSubview:(UIView *)view atIndex:(NSInteger...这样我们就可以很清楚的看到哪一个layout导致了整体的布局约束出现了错误,或者我们应该增加更多的布局约束 */ 620 - (void)exerciseAmbiguityInLayout NS_AVAILABLE_IOS
打开DynamicsTossingVC.swift并将以下代码放在viewDidLoad()中super.viewDidLoad()下方。...稍后,更改定位点使图像视图移动。 // 将锚点附加到视图就像安装一个将锚点连接到视图上的固定附件位置的不可见杆。...注意视图不仅仅是在屏幕上进行旋转; 如果您在图像的某个角落开始手势,则由于锚点的缘故,视图会随着手指移动而旋转。 但是,当完成拖动时,将视图恢复到原始位置会更好。...现在拖动图像后,它应该恢复到原始位置。 UIPushBehavior 接下来,我们需要在停止拖动时分离视图,并为其提供动力,以便在运动中释放视图时可以继续其轨迹。...表示视图必须移动的速度有多快才能使视图继续移动(而不是立即返回到原始位置)。
对于 iOS 11 中最新的 drag and drop 和安全区域亦有涉及。 UI 控件和基本布局 1.要在 UIView 上定义一个 Label有 哪几种方式?...5.请说明并比较以下关键词:Frame, Bounds, Center 关键词: #坐标 #父视图 Frame 是指当前视图(View)相对于父视图的平面坐标系统中的位置和大小。...Bounds 是指当前视图相对于自己的平面坐标系统中的位置和大小。 Center 是一个 CGPoint,指当前视图在父视图的平面坐标系统中最中间位置点 。...7.请说明并比较以下关键词:Safe Area, SafeAreaLayoutGuide, SafeAreaInsets 关键词: #安全区域 由于 iPhone X 全新的刘海设计,iOS 11 中引入了安全区域...很多时候 UI 控件可能在 iPhone 上大小刚好,但在 iPad 上可能偏小,位置也有可能有偏移。
我们的工程中需要一些额外的视图。(为了避免太多代码。我们将使用Interface Builder来拜访他们的位置,如果你愿意还是可以用代码的方式来实现的)。...图5.8 绕y轴旋转45度的视图 清单5.4 绕Y轴旋转图层 @implementation ViewController - (void)viewDidLoad { [super viewDidLoad...但是并不像以前那样直接将立方面添加到容器视图的宿主图层,我们将他们放置到一个CATransformLayer中创建一个独立的立方体对象,然后将两个这样的立方体放进容器中。...,他们会淡入到界面中。...CATiledLayer(不同于大部分的UIKit和Core Animation方法)支持多线程绘制,-drawLayer:inContext:方法可以在多个线程中同时地并发调用,所以请小心谨慎地确保你在这个方法中实现的绘制代码是线程安全的
前言: 1、在Mac OS中NSWindow的父类是NSResponder,而在iOS中UIWindow的父类是UIView。程序一般只有一个窗口但是会又很多视图。...2、UIView的作用:描画和动画,视图负责对其所属的矩形区域描画、布局和子视图管理、事件处理、可以接收触摸事件、事件信息的载体等等。...下面介绍的是view添加以及删除时所触发的方法 // 当视图添加子视图时调用 - (void)didAddSubview:(UIView *)subview; // 当子视图从本视图移除时调用...创建实例,添加到控制器的view,设背景色为紫色,并将001赋给tag值 override func viewDidLoad() { super.viewDidLoad() let...(deadline: .now()+3.0) { let view = UIView.init(frame: CGRect(x: 10, y: 100, width: 100, height:
UIView属性 CALayer属性 属性说明 frame frame 表示相对于其父视图的坐标位置 bounds bounds 表示相对于其自身的坐标位置,{0,0}通常是其左上角 center position...frame&&bounds.png 上图对原有视图做了旋转变换,之后的frame实际上代表了覆盖在图层旋转之后的整个轴对齐的矩形区域,此时frame的宽和高和bounds不再一致了。...换句话来讲就是:position是当前layer的anchorPoint在superLayer中的位置。...) UIView *viewB; @end @implementation TestLayerFiveVC - (void)viewDidLoad { [super viewDidLoad...(或视图)坐标系下的点或者矩形转换为另一个图层(或视图)坐标系下的点或者矩形;开发过程中我们通常操作的对象都是视图,所以下面以视图为例简单演示其用法:首先创建添加两个宽高都是100*100的橙色、紫色视图在控制器的
控件的frame不匹配所添加的约束, 比如 比如约束控件的宽度为100, 而控件现在的宽度是110 错误 ?...在没有Autolayout之前,UILabel的文字内容总是居中显示,导致顶部和底部会有一大片空缺区域 ?...有Autolayout之后,UILabel的bounds默认会自动包住所有的文字内容,顶部和底部不再会有空缺区域 ?...UILabel实现包裹内容 设置宽度约束为 <= 固定值 设置位置约束 不用去设置高度约束 基于Autolayout的动画 在修改了约束之后,只要执行下面代码,就能做动画效果 [UIView animateWithDuration...(blueView.mas_width);//和蓝色view的宽度相等 }]; 制作九宫格样式的视图布局 填充一个View控件到父控件中,然后隐藏显示。
您可以下载Final Xcode项目,以帮助您与自己的进度进行比较。 查看控制器 在主故事板中,让我们构建我们的集合视图。首先,把视图控制器从对象库旁边我们的视图控制器。...在第二个视图控制器和约束内插入一个UIView:0左,0右和0底(全部相对于superview)。取消选中“ 约束”到边距并将高度设置为380。 ?...从对象库中拖放标签并将其约束到Container中的水平居中并将顶部设置为30。...使用Command + R运行代码,然后修复2个错误。它将为您提供运行CollectionView所需的两种方法。 Sections中的项数和 Cell 在第一个函数内部,我们只需返回3。...文本是iPhone X并将底部约束为0并将容器中的水平中心约束。在“ 属性”检查器中,将“滚动方向”更改为“ 水平”并取消选中“ 显示”指示器。
UITabBarController的视图结构如下; ?...注意:UITabBarButton在UITabBar中得位置是均分的,UITabBar的高度为49。...每个视图控制器都有一个tabBarItem属性,通过它控制视图在UITabBarController的tabBar中的显示信息。...自定义TbarBar 视图切换时的动画的关键方法(后续会整理出视图切换时的动画实现) - (id )tabBarController..., 而且作用域是整个工程, 也就是说,不管在工程中的哪个位置写下这句代码, 整个工程中的按钮的字体颜色都会变成灰色**
class func awakeFromNib() { super.awakeFromNib() print(#function) } //加载vc中的...print(#function) } //vc加载完成后 override func viewDidLoad() { super.viewDidLoad...Bool) { super.viewWillAppear(animated) print(#function) } //根视图的布局边距已更改...override func viewLayoutMarginsDidChange() { print(#function) } //根视图的布局安全边距已更改。...ios11.0 override func viewSafeAreaInsetsDidChange() { print(#function) } //当前视图更新约束是调用
开发中的其他 UIView(及其子类)都放在该view上。 UIViewController中UIView的生命周期函数 viewDidLoad:View 完成内存加载。...UIView常见属性 backgroudColor:背景色。 frame:相对父视图的坐标和大小。 bounds:相对自身的坐标和大小,所以 bounds 的 x 和 y 永远为0。...UIView常见方法 addSubview:添加视图到父视图。 removeFromSuperview:将视图从父视图中移除(需提前讲解触摸方法)。...exchangeSubviewAtIndex:将2个位置的视图互换。 演示UIView与UIViewController Storyboard 注意左侧面板的视图层次结构。...连线的前提 Storyboard 中的 UIViewController 与想拖拽的类进行了关联。 经典的连线错误 UIView 连线后删除了类中的 @IBOutlet 或者 @IBAction。
领取专属 10元无门槛券
手把手带您无忧上云