首先我们遍历打印出UINavigationBar的所有子视图,是所有,包括子视图的一层层子视图,来看看到底导航栏都包含了哪些东西: 上面这张图就是导航栏UINavigationBar所包含的所有子view...看一下: 我们成功的将导航栏背景设为透明了!但是那条细线是什么情况?!...现在导航栏的透明就比较完美了: 对于这种将导航栏背景直接设为透明的情况,在 Tabbar 切换界面时,也不会出现导航栏收起的小动画: 为UIViewController添加导航栏透明度属性 为了方便...UIViewController的设置方法如下: // UIViewController+Cloudox.h @interface UIViewController (Cloudox) @property...,我们可以在 UINavigationController 的 Delegate 中添加一个处理,监控松手后时自动完成返回还是取消返回操作,同时使用 UIView 动画(关于 UIView 动画可以看我的这篇文章
UIView与UIViewController的关系 UIViewController 中默认有一个和屏幕一样大的 UIView,UIViewController 管理着它的生命周期。...UIView iOS坐标系 二维坐标系 ? 坐标系.png z轴 获取屏幕大小 UIScreen.main.bounds UIView添加到UIViewController的View ?...UIView添加到UIViewController的View.png UIView的容器概念 UIView 中可以放其他的 UIView。 UIView 的层次关系(平级与包含)。...UIView常见方法 addSubview:添加视图到父视图。 removeFromSuperview:将视图从父视图中移除(需提前讲解触摸方法)。...exchangeSubviewAtIndex:将2个位置的视图互换。 演示UIView与UIViewController Storyboard 注意左侧面板的视图层次结构。
包括简单的UIView层的动画,CALayer层的动画,Autolayout自动布局动画以及CoreAnimation核心动画框架等。...CoreAnimation解读之三——几种常用Layer的使用解析:https://my.oschina.net/u/2340880/blog/538024 iOS开发CoreAnimation解读之四——Layer层动画内容...首先创建一个类,使其遵守UIViewControllerTransitioningDelegate协议,比如我这里将类名去做TransDelegate,继承自NSObject。...起始位置 toVC.view.frame = CGRectOffset(finalRect, [[UIScreen mainScreen]bounds].size.width, 0); //添加到内容视图...我们在使用系统的导航控制器时,右划返回效果对用户体验十分友好,我们下面就来试着将视图控制器的模态跳转设计成类似导航可交互的。
通过加载xib文件来创建UIViewController的view 如果没有找到相关联的xib文件,就会创建一个空白的UIView,然后赋值给UIViewController的view属性 默认不用实现...window为keywindow) Push到下一层的顺序 viewWillDisappear->viewWillAppear->viewDidDisappear->viewDidAppear 四、程序的生命周期...2、UIWindow的主要作用有: 1.作为UIView的最顶层容器,包含应用显示所有的UIView; 2.传递触摸消息和键盘事件给UIView; 把view添加到uiwindow 3、把view...添加到uiwindow上面 (1)直接将控制器的view添加到UIWindow中,并不理会它对应的控制器 [self.window addsubview:vc.view]; (2)设置uiwindow...的根控制器,自动将rootviewcontroller的view添加到window中,负责管理rootviewcontroller的生命周期 [self.window.rootviewcontroller
UIView是UIKit框架里面最基础的视图类。UIView类定义了一个矩形的区域,并管理该矩形区域内的所有屏幕显示。 控件 ?...image.png 1个UIWindow 或 UIView 1、设置背景色 import UIKit class ViewController:UIViewController { override...UITapGestureRecognizer(taget:self,action:#selector(ViewController.SingleTap)) import UIKit class ViewController:UIViewController...init(coder:) has not been implemented") } } 在ViewController中调用 import UIKit class ViewController:UIViewController...{ super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } ---- 设置渐变
window and also make it key. otherwise use view hidden property @property(nullable, nonatomic,strong) UIViewController...iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了 主要作用是提供一个区域用来显示...UIView;将事件分发给UIView;与UIViewController一起处理屏幕的旋转事件。...UIView @interface UIView : UIResponder UIView的显示。
触摸事件传递与响应 当触摸事件产生以后,App 里有很多的 UIView 或 UIViewController,到底应该谁去响应这个事件呢?...如果能,那么 UIWindow 会从后往前遍历自己的子 UIView,将事件向下传递。...hitTest方法将事件传递给其子 UIView,这样循环寻找与传递下去,直到获取最佳响应者。...默认的next对象为: (1)UIView:若当前响应者是 UIViewController 的view,则next是 UIViewController,否则上一个响应者是其父 UIView。...将手势添加到需要的 UIView 上。每个手势只对应一个 UIView,当屏幕触摸在当前 UIView 里时,如果手势和预定的一样,回调方法就会调用。
import SwiftUIimport UIKitclass ViewController: UIViewController { lazy var imageView: UIImageView...override func viewDidLoad() { super.viewDidLoad() // 关联UIView,当该UIView添加到父UIView或者UIWindows...: self, selector: #selector(update)) updateLink.addAction { link, info in } // 添加到特定阶段...{ imageView.removeFromSuperview() }}案例:监听 UIView 动画中参数的变化,以layer.opacity为例。...import UIKitclass ViewController: UIViewController { lazy var redView: UIView = { let redView
如何将视图划分为 View 和 Controller?通常,它也适用于 iOS,甚至包含 UIView 和 UIViewController 的 iOS SDK。...UIView 和 UIViewController 是已经在 iOS SDK 中实现的类。我的意思是,有些人拒绝 MVC,但仍使用 UIView 和 UIViewController。...尽管我说过,除了 UIView 和 UIViewController 之外,Presentation 层中可能还有其他类,但是 Presenter 是这样做的一个不好的例子。...因为,除了 MVP 的所有问题(它还会重复 Presentation 层中 MVP 的所有错误,包括复制 Presenter 以及将 UIViewController 转换为 View 的尝试失败),VIPER...为所有问题创建相同的类,并且每次仅将代码添加到这些类中并不是一个好的设计。它甚至都不是 OOP,我认为这是具有 5 个文件的过程编程。 我认为,VIPER 是一个很大的错误。
import SwiftUI import UIKit class ViewController: UIViewController { lazy var imageView: UIImageView...override func viewDidLoad() { super.viewDidLoad() // 关联UIView,当该UIView添加到父UIView或者UIWindows...self, selector: #selector(update)) updateLink.addAction { link, info in } // 添加到特定阶段...{ imageView.removeFromSuperview() } } 案例:监听 UIView 动画中参数的变化,以layer.opacity为例。...import UIKit class ViewController: UIViewController { lazy var redView: UIView = { let redView
应用程序中几乎全部的可视控件都是UIView以及UIView的子类的实例,并且UIWindow也是UIView的子类。...UIWindow可以不借助于父类视图显示在屏幕上,其余的视图都需要添加到父视图中才能显示。...initWithFrame : 通过frame初始化视图,参数为CGRectMake(x, y, width, height); (2) insertSubView: atIndex: 往指定层上插入视图...1.我们在一个空工程中新建一个视图控制器的类MainViewController, 让MainViewController继承于UIViewController, MainViewController.h...文件的内容如下: 1 2 3 #import @interface MainViewController : UIViewController @end
= nil, specifiedView: UIView? = nil, superView: UIView?...是否进入全屏 specifiedView UIView? 指定即将全屏的视图 superView UIView?...方法不推荐直接使用,不过当遵守协议者为UIViewController时,可以通过使用默认参数来切换屏幕方向lxf.switchFullScreen() ?...lxf_FullScreenable_1 以下分两种情况说明 UIViewController func enterFullScreen( specifiedView: UIView,..., FullScreenable { } 2、指定视图进入全屏 lxf.enterFullScreen(specifiedView: cyanView) 3、指定视图退出全屏,并添加到当前控制器的view
UIView是iPhone屏幕上很多控件的基础类。每个iPhone用户界面都是由显示在UIWindow(这其实也是个特殊的UIView)内的众多UIView及其专门化子类构建的。...视窗UIWindow虽然也是UIView,但不能用处理普通UIView的方式来设置; 2....UIView视图使用initWithFrame:初始化,而其UIViewController则使用init类方法直接初始化。3....通过调用initWithRootViewController:方法可以将特定控制器设置为根。...MyViewController alloc] init]; MyOtherViewController *vc2 = [[MyViewController alloc] init]; // 将创建好的这些视图控制器先添加到一个
CoreAnimation是iOS中实现动画的框架,整个iOS中的动画(比如UIView中封装的动画、UIViewController切换时的转场动画、UITableViewCell移除增添时的动画等,...要实现这样的效果,基本思路是: 1,新建一个弹窗背景视图,背景颜色设置为黑色,透明度设置为0.5; 2,将自定义弹窗视图加在弹窗背景视图上; 3,触发弹出弹窗视图的时候,将弹窗背景视图添加到程序的根窗口上...:_customView]; _customView.center = self.center; _customView.alpha = 0; } @end 上述代码是我封装的一个浮层视图...展示浮层上的自定义提示视图的时候,我使用了UIView的动画,可以在这里实现浮层上的自定义提示视图展示时候的动画。 给浮层的背景视图添加一个点击手势,以在点击的时候移除该浮层。...设计师设计出一组动画效果,然后导成JSON文件,我使用Lottie解析该JSON文件就可以将动画效果展示出来,使用非常简单。
UIApplication / UIViewController / UIView 以及所有继承UIView的UIKit类(包含UIWindow)都直接或间接的继承了UIResponder,这就意味着所有的...) 看个例子: view 2是view 1的子view,当一个点击落在view 2区域内,这个查找过程会从UIWindow开始,然后一层层子view查找下去,最终view 2会作为最合适的响应者被hitTest...: 在上面提到的查找阶段,通过hitTest:withEvent:最终查找到的最后view自然就做为第一个可以响应该事件的view,当该view不能处理该事件,系统会通过nextResponder继续将事件传递给下一个响应者...这里需要注意的是nextResponder的处理规则: UIView的nextResponder属性,如果有管理此view的UIViewController对象,则为此UIViewController对象...UIViewController的nextResponder属性为其管理view的superview。 UIWindow的nextResponder属性为UIApplication对象。
只需在第一层页面向第二层页面跳转的地方设置一次即可,第二层向第三层跳转时不需要再次设置,当然,想在第三层页面上显示出 tabbar,设置.hidesBottomBarWhenPushed = NO也是不可能的出效果的...:(UITabBarController *)tabBarController animationControllerForTransitionFromViewController:(UIViewController...*)fromVC toViewController:(UIViewController *)toVC NS_AVAILABLE_IOS...UINavigationControllerOperation)operation fromViewController:(UIViewController...*)fromVC toViewController:(UIViewController *
*, 然后***由 UIViewController 负责创建与其对应的 UIView 界面***, 这个 UIView 是全屏控件的父容器, UIViewController 负责管理这个全屏的父容器...UIView ; 2.UIViewController 作用 : UIViewController 负责 ① 管理 UIView 的生命周期 创建 显示 销毁, ② 监听 UIView 内部控件的事件响应...= CGRectMake(0, 0, 100, 100); 6.添加 UIView 控件到界面中 : 将控件添加到之前设置的 mainView 中, [self.mainView addSubview...将创建的 UIView 添加到 mainView 中去; [self.mainView addSubview:generateView]; //4....将创建的 UIView 添加到 mainView 中去; [self.mainView addSubview:generateView]; //4.
, presenting: UIViewController, source: UIViewController...NO-fail } ---- 3.4 pop or dismiss animation (消失动画) 大致跟显示动画一致,转场动画都是需要显示toView, 让fromView消失 上面显示动画的例子: 是将toView...动画成功:toView就显示在conatinerView上,进入的是下一个页面 动画失败即转场失败:则应该将toView从容器上移除,即还停留在原来的页面上。...以下消失动画的例子: 同样是将toView加到containerView上,但用的是fromView进行动画。...return } // 2. set initial value for animation views and add to container view (设置动画视图的初始值, 并添加到都到容器上
-> UIview -> UIbutton 此时 UIviewController 强引用着 UIview , UIview 强引用着 UIbutton , IBoutlet 连线到控制器的. m...或者. h 中作为视图的属性时用 weak 修饰就可以了, (觉得用 strong 修饰也可以但是没有必要) 添加到子控件也是强引用: UIbutton 就是添加到了 UIviewController...尽量避免渐变效果、图片拉伸和离屏渲染。 当不同的行的高度不一样时,尽量缓存它们的高度值。...2.将界面的封装抽象到专门的类中 构造专门的 UIView 的子类,来负责这些控件的拼装。...5.整合常量 34.项目中网络层如何做安全处理 1.判断API的调用请求是否来自于经过授权的APP。
类; -- 拖动控件到 UIViewController 中 : 按住 control 键, 将控件拖到 UIViewController.h 中; -- 设置 IBOutlet 的属性 : 控件拖到...addTarget:self action:@selector(button_click) forControlEvents:UIControlEventTouchUpInside]; // 将按钮添加到...addTarget:self action:@selector(deleteButton) forControlEvents:UIControlEventTouchUpInside]; // 将按钮添加到布局中...回调该方法; -- "willMoveToSuperview : " 方法 : 在将要添加到父控件之前, 回调该方法; -- "didMoveToWindow : " 方法 : 将控件添加到窗口完成时..., 回调该方法; -- "willMoveToWindow : " 方法 : 将控件添加到窗口之前, 回调该方法; -- "touchesBegan : withEvent : " 方法 : 开始触摸控件时触发的方法
领取专属 10元无门槛券
手把手带您无忧上云