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

《Motion Design for iOS》(三十一)

首先,当地图的图标被点击时,应用的主界面(包括导航栏)同时有不透明度和比例的动画来让其淡出到黑色的背景中并且有一点点缩小。同时,地图伴随着不透明度和比例的动画显著地显现到界面的前面来。...app的运行时很聪明,你只用写“app-bg”它就会在app包的图片资源中找到“app-bg@2x.png”。这个视图被添加为类的@property了,这样我们就可以在之后的代码中引用它。...块中来让其私有。...在苹果的开发者网站的Objective-C指南中可以阅读更多关于程序的属性的内容。 最后,我们将UIImageView作为主屏幕的一个子视图添加进去。...这是一个快速的模型,否则我会创建另一个UIViewController的子类来装载我们的UI代码。 如果我构建并运行,这就是app目前看起来的样子。 非常棒!

67730

iOS 面试策略之系统框架-UIScrollView及其子类

101 295 1431来获取一份详细的大厂面试资料为你的跳槽多添一份保障。...auto layout #UITableViewAutomaticDimension #estimatedRowHeight 主要有以下三步: 用auto layout对UITableViewCell中所有子视图的位置和大小进行定义...如果你正在跳槽或者正准备跳槽不妨动动小手,添加一下咱们的交流群931 542 608来获取一份详细的大厂面试资料为你的跳槽多添一份保障。 第一个问题。...对于复杂视图的创建,可以采用惰性加载来推迟创建时间。尽量减少视图层级也是很好的优化方法。Facebook 推出的 ComponentKit 就是很好的解决方案。 第二个问题。...101 295 1431来获取一份详细的大厂面试资料为你的跳槽多添一份保障。

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

    iOS 面试策略之经验之谈-架构的选择

    试想如果所有代码都集中在一个 UIViewController 中,App 理论上确实能够运行,然而当调试时面对拥有庞大代码的单个文件,我们需要花大量的时间去找到发生问题的源头。...而不同点在于,MVC 中 View 和 Controller 耦合在 ViewController 类里;而 MVP 的 View 是单独的 UIView/UIViewController,Presenter...我们来看下 MVP 的结构: [image] 如图,MVP 中的 View 是单独的 Class(在 MVP 中,UIView 或是 UIViewController 都属于 View 层),它持有 Presenter...如果你正在跳槽或者正准备跳槽不妨动动小手,添加一下咱们的交流群101 295 1431来获取一份详细的大厂面试资料为你的跳槽多添一份保障。...但理论上来说,MVC 是希望视图层就是单纯的 UIView,或者 UIViewController 只负责 UI 更新交互,不涉及业务逻辑和模型更新。

    1K30

    iOS项目——基本框架搭建

    添加itemBar对应的ViewController的方法有两种:一是使用UITabBarController的  方法设置;二是用UIViewController的 addChildViewController...: 方法添加子视图,也可以实现添加到tabBar的功能,但是这种方法对于barItem个数 > 5的时候,只会显示前五个,剩下的不会出现时出来,也没有【more】按钮可以选择。...setViewControllers: 示例代码如下,自定义一个TabBarController继承自UITabBarController,然后重写其 viewDidLoad 方法添加子视图和标签:...在我们前面添tabBar item的代码中就存在大量重复性的代码,所以我们需要对其进行重构,将重复性的代码进行抽取,将不同的内容设置成参数进行自定义设置,重构后的逻辑如下: @implementation...,无法跳到对应定义的位置,这时候可能就是配置在Build Setting中,例如我们经常见到的宏 DEBUG 就配置在配置在Build Setting中。 ?

    1.8K80

    唯一可行的 iOS 架构

    如何将视图划分为 View 和 Controller?通常,它也适用于 iOS,甚至包含 UIView 和 UIViewController 的 iOS SDK。...每个 UIViewController 都拥有一个根 UIView。我们可以在 interface builder 中绘制视图而无需任何代码,并将所有用户操作链接到UIViewController。...因此,尝试创建一个新的 Presenter 类并将 UIViewController 视为一个视图是没有意义的。...在 OOP 中,常见的任务是了解我们应该创建哪些实体,如何将它们彼此关联以及如何命名它们,从而以最清楚地描述代码。...这也是开发人员创建自己的 Presenter 并将所有逻辑移至这个 NSObject 子类的另一个原因。但是我们已经看到了这种方法的问题。 我们可以在 Person 类中编写此逻辑吗?

    1.3K20

    iOS学习——获取当前最顶层的ViewController

    在iOS开发过程中,我们经常性会需要获取当前页面的ViewController,然后利用ViewController进行一些操作,例如在最顶层的ViewController上展示一个UIAlertController...,或者在最顶层的ViewController上present另一个ViewController,或者进行其他操作。...在寻找的过程中,要分别考虑当前ViewController是UITabBarController和UINavigationController的情况,同时还要考虑到当前ViewController是否通过...作为导航结构,以及可能present出新的VC,其实如果用storyboard的方式写UI的话就很清晰,类似树的结构,再利用递归找到当前视图。...ps:   如果是需要push新的视图,就非常简单了。用上面的方法获取到顶层的视图,判断currentVC.navigationController是否为nil。

    6.7K50

    View Controller编程指南

    UIViewController类定义了管理你的View,处理事件,从一个ViewController转换到另一个ViewController,以及协调你的应用程序的其他部分的方法和属性。...当你继承UIViewController的时候,你可以添加任何你需要在你的子类中管理你的数据的变量。...ViewController可以验证来自视图的输入,然后以数据对象需要的格式打包输入,但是应该最小化ViewController在管理实际数据中的角色。...容器型ViewController通常作为root ViewController安装在窗口中(如图所示),但它们也可以以模态方式呈现,或者作为其他容器的子项安装。容器负责适当地定位其子视图。...UIDocument对象负责协调数据的加载和保存,而UIViewController对象协调屏幕上的视图显示。

    1.3K20

    iOS 自定义转场动画

    ]; //取出转场前后视图控制器上的视图view UIView * toView = [transitionContext viewForKey:UITransitionContextToViewKey...containerView,要做转场动画的视图就必须要加入containerView上才能进行,可以理解containerView管理着所有做转场动画的视图 UIView *containerView...//必要调用实现的系统方法 //手势过程中,通过updateInteractiveTransition设置转场过程动画进行的百分比,然后系统会根据百分比自动布局动画控件,不用我们控制了 [self...同上 3、在push动画之前设置导航控制器的转场动画代理,转场时最上层的视图控制器需要遵循的协议,并设置为代理,并实现如下代理方法: /...// 判断导航控制器是否只有一个子控制器,如果只有一个子控制器,肯定是根控制器 if (self.childViewControllers.count == 1) { // 表示用户在根控制器界面

    1.1K90

    iOS 自定义转场动画

    ]; //取出转场前后视图控制器上的视图view UIView * toView = [transitionContext viewForKey:UITransitionContextToViewKey...containerView,要做转场动画的视图就必须要加入containerView上才能进行,可以理解containerView管理着所有做转场动画的视图 UIView *containerView...//必要调用实现的系统方法 //手势过程中,通过updateInteractiveTransition设置转场过程动画进行的百分比,然后系统会根据百分比自动布局动画控件,不用我们控制了 [self...同上 3、在push动画之前设置导航控制器的转场动画代理,转场时最上层的视图控制器需要遵循的协议,并设置为代理,并实现如下代理方法:...// 判断导航控制器是否只有一个子控制器,如果只有一个子控制器,肯定是根控制器 if (self.childViewControllers.count == 1) { // 表示用户在根控制器界面

    1.3K50

    iOS多控制器之UINavigationController&UITableBarController1. 多控制器2. UINavigationController3. UITableBarCont

    第一次显示出来的自控制器; 2,addChildViewController:此方法是UIViewController的方法,可以用来添加子控制器; 3,通过属性viewControllers进行设置...常见问题 导航条高度:44 UINavigationController保存子控制起的形式:栈 获取UINavigationController下面的所有的子控制器:viewControllers /...UITabBarButton在UITabBar中得位置是均分的,UITabBar的高度为49。 UITabBar的结构⼤大致如下图所示: ?...Paste_Image.png 7.2.3 往UITabBarController中添加子控制器 有两种方法UITabBarController中添加子控制器 : [tb addChildViewController...:c1]; tb.viewControllers=@[c1,c2,c3,c4]; 注意:展示的顺序和添加的顺序一致,和导航控制器中不同,展现在眼前的是导航控制器的根视图控制器也就是第一个添加到导航控制器上的视图

    1.4K40

    iOS14开发-UIViewController

    介绍 UIViewController 可以理解为 App 的界面,负责管理 UIView 中显示的内容和用户的交互,主要有以下作用: 负责创建和管理 UIView。 响应用户与视图的交互。...跳转 从一个 UIViewController 跳转到另一个 UIViewController 有两种方式,分别为模态跳转和导航跳转。...通过当前 UIViewController 某个具体的控件(如按钮)拽线到另一个 UIViewController。...需要设置当前的 UIViewController 为被代理 UIViewController 中的代理属性。 闭包 可以理解为代理模式中协议的闭包替代,比代理模式更简单。...接收值的 UIViewController 实现需要传值的 UIViewController 中的闭包属性,在闭包的实现中拿到传过来的值进行使用。

    2.4K20

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

    :返回nil; •若返回YES,则向当前视图的所有子视图(subviews)发送hitTest:withEvent:消息,所有子视图的遍历顺序是从top到bottom,即从subviews数组的末尾向前遍历...,直到有子视图返回非空对象或者全部子视图遍历完毕; •若第一次有子视图返回非空对象,则hitTest:withEvent:方法返回此对象,处理结束; •如所有子视图都返回非,则hitTest:withEvent...如果一个子视图的区域超过父视图的bound区域(父视图的clipsToBounds属性为NO,这样超过父视图bound区域的子视图内容也会显示),那么正常情况下对子视图在父视图之外区域的触摸操作不会被识别...,因为父视图的pointInside:withEvent:方法会返回NO,这样就不会继续向下遍历子视图了。...UIScrollView 5.1.5通过UIView对象获取其所属UIViewController 通过UIView对象获取该对象所属的UIViewController可以使用UIResponder

    1.2K20

    iOS对UIViewController生命周期和属性方法的解析

    iOS对UIViewController生命周期和属性方法的解析 一、引言         作为MVC设计模式中的C,Controller一直扮演着项目开发中最重要的角色,它是视图和数据的桥梁,通过它的管理...iOS中的UIViewController是UIKit框架中最基本的一个类。从第一个UI视图到复杂完整项目,都离不开UIViewController作为基础。...7:viewDidLayoutSubviews:已经布局完成子视图。 8:viewDidAppare:视图完成显示时调用。 9:viewWillDisappear:视图将要消失时调用。...三、从storyBoard加载UIViewController实例的传值陷阱         我们知道,当我们从StoryBoard中加载ViewController时,我们在Controller中拖拽的视图是可以被初始化的...1、parentViewController         UIViewController里面封装了一个数组,可以存放其子ViewController,系统中使用的例子就是导航和tabBar这类的控制器

    3K20

    iOS14开发-入门知识

    UIView与UIViewController 初步印象 iOS 开发中,一个界面就是一个 UIViewController(视图控制器),界面上显示的内容就是 UIView(视图)。...UIView与UIViewController的关系 UIViewController 中默认有一个和屏幕一样大的 UIView,UIViewController 管理着它的生命周期。...所有放在界面上的 UI 控件都放在 UIViewController 的 UIView 之上,在 UIViewController 的代码中可以通过self.view属性获取它。...tag:标记(Int 类型,默认等于0),设置后,可以通过所在容器View.viewWithTag方法拿到这个视图。 title:标题。 superview:父视图。 subviews:所有子视图。...连线的前提 Storyboard 中的 UIViewController 与想拖拽的类进行了关联。 经典的连线错误 UIView 连线后删除了类中的 @IBOutlet 或者 @IBAction。

    2.9K40

    onAppear 的调用时机

    创建实例、求值、布局、渲染在 SwiftUI 中,一个视图在它的生命周期中通常会经历四个阶段:创建实例视图树中,处于可显示分支的视图基本上都会经历的一个阶段。...在一个视图的生存期中,SwiftUI 可能会多次创建视图实例。由于惰性视图的优化机制,对于尚未处于可见区域的子视图,SwiftUI 不会创建其实例求值一个被显示的视图至少会经历一次的过程。...布局在计算好当前需要显示的视图所有的视图值后,SwiftUI 将进入到布局阶段。通过父视图向子视图提供建议尺寸,子视图返回需求尺寸这一过程,最终计算出完整的布局结果。...判断视图正准备渲染尽管 SwiftUI 视图并没有提供可以展示该过程的 API,不过我们可以利用 UIViewControllerRepresentable 协议来包装一个 UIViewController...与 Layout 协议的 sizeThatFits 调用时机一致,都是在布局过程中,父视图向子视图询问需求尺寸时访问。

    2.1K20

    onAppear 的调用时机

    创建实例、求值、布局、渲染 在 SwiftUI 中,一个视图在它的生命周期中通常会经历四个阶段: 创建实例 视图树中,处于可显示分支的视图基本上都会经历的一个阶段。...在一个视图的生存期中,SwiftUI 可能会多次创建视图实例。 由于惰性视图的优化机制,对于尚未处于可见区域的子视图,SwiftUI 不会创建其实例 求值 一个被显示的视图至少会经历一次的过程。...布局 在计算好当前需要显示的视图所有的视图值后,SwiftUI 将进入到布局阶段。通过父视图向子视图提供建议尺寸,子视图返回需求尺寸这一过程,最终计算出完整的布局结果。...判断视图正准备渲染 尽管 SwiftUI 视图并没有提供可以展示该过程的 API,不过我们可以利用 UIViewControllerRepresentable 协议来包装一个 UIViewController...与 Layout 协议的 sizeThatFits 调用时机一致,都是在布局过程中,父视图向子视图询问需求尺寸时访问。

    1.1K10

    iOS 事件体系知识及原理小记

    :withEvent:方法在视图(UIView)层次结构中找到一个最合适的UIView来处理触摸事件,并将UITouch与UIEvent交给UIView处理(通过touchesBegan/touchesMoved.../touchesEnded等方法传递) 看个例子: view 2是view 1的子view,当一个点击落在view 2区域内,这个查找过程会从UIWindow开始,然后一层层子view查找下去,最终view...再看看另一个特殊的场景: view 2还是view 1的子view;但当一个点击落在view 2的区域内时,查找还是从UIWindow开始,但在view 1的hitTest中就返回了nil,因为点击区域不在...view 1中,导致view 1的子view都不会再进行hitTest;这点跟web中的事件处理是截然不同的;这也导致一些超边界的点击必须由业务去重载hitText方法。...这里需要注意的是nextResponder的处理规则: UIView的nextResponder属性,如果有管理此view的UIViewController对象,则为此UIViewController对象

    1.3K90
    领券