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

iOS基础问答面试题连载(二)-附答案

UIWindow是一种特殊的UIView,通常在一个app中至少有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view, 最后控制器的view...添加到UIWindow上,于是控制器的view就显示在屏幕上了 一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow 6.手动创建窗口的步骤?...当调用push方法, 会把要push的控制器添加到导航控制器管理的栈中,把之前导航控制器中栈顶控制器View给移除,把当前栈顶控制器添加上去. 15.导航pop做了哪些事情?...当调用pop方法, 会把要pop的控制器从栈里移除,把之前导航控制器中栈顶控制器View给移除,把当前栈顶控制器添加上去. 16.如何设置导航条的内容?...如果控件非常多,把不需要与用户进行交互的控件.能过异步绘制出来.生成一张图片.把图片添加到cell当中 此处为隐藏的内容! 发表评论并刷新,才能查看

1.3K90

Cocoa编程中视图控制器与视图类详解

mainBundle] infoDictionary] objectForKey:@"CFBundleName"]; //可使标题自动反映运行的应用程序名称  导航控制器加载模态视图控制器:  通常情况下...[MyViewController alloc] init];   // 创建好的这些视图控制器添加到一个Array对象中,再将此数组分配给Tab Bar Controller的viewControllers...控制器的当前视图添加到窗口 [window addSubview:tabBarController.view];   当然在应用程序委托AppDelegate类中创建UITabBarController...主要属性 • view: 控制器管理的根视图 • title: 控制器导航栏的标题 • wantsFullScreenLayout: 是否需要全屏显示 • interfaceOrientation: 界面方向...• navigationItem:导航子项 • editing: 是否处理编辑状态 • hidesBottomBarWhenPushed: 入栈隐藏底部栏 • toolbarItems: 工具栏子项集

5K50
您找到你想要的搜索结果了吗?
是的
没有找到

iOS开发UINavigation系列四——导航控制器UINavigationController

iOS开发UINavigation系列四——导航控制器UINavigationController 一、引言         在前面的博客中,我么你介绍了UINavigationBar,UINavigationItem...和UIToolBar,UINavigationController是这些控件和UIViewController紧密的结合了起来,使用导航,我们的应用程序层次会更加分明,对controller的管理也更加方便...//iOS7之后,在导航中右划会进行pop操作,设置这个的enable可以控制设置手势是否失效 @property(nullable, nonatomic, readonly) UIGestureRecognizer...; //敲击屏幕可以隐藏与显示导航栏 @property (nonatomic, readwrite, assign) BOOL hidesBarsOnTap; //敲击屏幕的手势 @property ...UIViewController *)fromVC toViewController:(UIViewController *)toVC ; 六、与UIViewController相关         当一个controller被添加到导航中后

1.8K20

iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

; -- UIWindow 属性 : 代表 IOS 应用程序的窗口, 一个应用只需创建一次 UIWindow 窗口; -- FKViewController 属性 : 代表视图控制器, 系统创建控制器...// 开发者还可通过该方法来保存足够的状态数据, // 这样保证用户重新启动该应用时能正确恢复到当前状态 // 如果该应用程序支持后台执行,当用户退出,系统调用调用该方法,而不是调用 // applicationWillTerminate..., 箭头指向需要加载的 视图控制器; -- 移动箭头 : 视图中只有一个 UI 控制器, 移动箭头始终指向唯一的 一个 UI 控制器; -- 好处 : 可以直观地看到多个视图之间的协作关系, 可以在 Interface..., 回调该方法; -- "didMoveToWindow : " 方法 : 控件添加到窗口完成, 回调该方法; -- "willMoveToWindow : " 方法 : 控件添加到窗口之前, 回调该方法...:  -- iPad 和 iPad Mini (@1x) : 76 x 76 ; -- iPhone 和 iPod : 57 x 57; (4) 启动界面像素 Retina 屏幕启动画面 :  --

4.8K30

IOS开发系列——UIView专题之一:UIWindow篇

iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了。...一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow。也就说,没有UIWindow,就看不见任何UI界面。...在程序启动完毕之后就会调用一次,创建过程如下: 提示:应用程序启动之后,先创建Application,再创建它的代理,之后创建UIwindow。UIWindow继承自UIview。...2.把view添加到uiwindow 创建一个控制器,把view添加到uiwindow上面(有两种方式) (1)直接控制器的view添加到UIWindow中,并不理会它对应的控制器 [self.window...当发生屏幕旋转事件的时候,UIapplication对象会将旋转事件传递给uiwindow,uiwindow又会将旋转事件传递给它的根控制器,由根控制器决定是否需要旋转UIapplication->uiwindow

69930

iOS---iPad开发及iPad特有的特技

1.在控制器中得到设备的旋转方向 在 iOS8及以后,屏幕就只有旋转后屏幕尺寸之分,不再是过期的旋转方向。...在iOS7及以前得到屏幕旋转方向的方法 /** // UIInterfaceOrientation ,屏幕方向 UIInterfaceOrientationUnknown = UIDeviceOrientationUnknown...宽度:竖屏的宽度(768) 高度:当前屏幕的高度(填充整个高度) 横屏 ?...按钮,然后弹出UIPopoverController 创建UIPopoverController控制器的内容控制器添加到UIPopoverController上 1>设置内容控制器(并需先创建内容控制器...View上添加个按钮,点击,弹出一个UIPopoverController控制器,然后这个控制器再用导航控制器包装,显示二级控制器 1>调用方法 /** * 弹出UIPopoverController

2.5K70

AVKit框架详细解析(二) —— 基于视频播放器的画中画实现(一)

如果发生这种情况,只需重新启动它。 您需要为 RickTV 和 RickTV-iOS的targetss重复以下步骤: 1) 选择 RickTV 或 RickTV-iOS target。...如果您的应用程序具有自定义播放控制器,则您需要做一些额外的工作来支持画中画。 接下来您将了解这一点。...stopPictureInPicture() 当用户点击适当的按钮,这些方法告诉画中画控制器启动或停止画中画。...如果用户选择播放视频画中画,可以合理地假设他们不希望您的应用程序屏幕显示有关视频现在如何播放画中画的大量信息。他们可能想继续使用您的应用程序的其余部分。...目前,当视频在画中画窗口中播放,示例应用程序会显示一条消息。您可以使用画中画控制器代理中的方法来控制画中画播放开始和结束发生的情况。

2.6K10

ViewController及View的生命周期1. 起因2. Controller的生命周期3. View的生命周期4. 内存警告

为了能够进一步搞清楚之间的区别,我们在不同屏幕上运营一下这两个方法看看调度的时间点。我们Xcode默认使用5S去设置一下,屏幕大小是320*568,但是如果运行在6s上会怎么样。...所以系统在这两者之间肯定存在一个屏幕适配的过程。 从上面的结果可以看到,如果需要调整空间的frame,其实是放在viewDidAppear中最靠谱的。...iOS7新增加了导航控制器侧滑手势,当触发侧滑返回,会调用系统的viewWillDisappear:方法,取消侧滑返回又会调用viewWillAppear:方法。...isBeingDismissed 会在viewWillDisappear & viewDidDisappear 方法内部调用这个方法判断视图控制器的视图的隐藏是否因为视图控制器被清退 (dismissed...更严谨一点,还需要判断view是否已经加载。如果没有加载,就不需要干掉了。 实际开发中为了写的少点,都会写在基类控制器中。 官方说,iOS 6.0以后系统就不会自动清理,需要手动清理。

1.3K30

IOS开发之视图和视图控制器

视图(View), 视图控制器(ViewController)是IOS开发UI部分比较重要的东西。在学习视图这一块的东西的时候,感觉和Java Swing中的Panel差不多。...UIWindow可以不借助于父类视图显示在屏幕上,其余的视图都需要添加到父视图中才能显示。...窗口是用来显示视图的,下面我们将会结合着实例来具体的学习一下IOS中的View和ViewController         1.首先我们需要建一个EmptyProject来测试我们的View和ViewController...6.导航视图             页签条和导航条和视图控制器结合使用,为用户提供从一个屏幕到另一个屏幕导航工具。...self.subView.backgroundColor = [UIColor brownColor];     [self.view addSubview:self.subView];   } @end   3.我们需要把我们新建的视图控制器和我们的窗口关联

1.7K70

UIViewController生命周期

合创建一些附加的view和控件 3、ViewWillAppear 在视图加载完成,并即将显示在屏幕,会调用viewWillAppear方法,在这个方法里,可以改变当前屏幕方向或状态栏的风格等。...生命周期: application didFinishLaunchingWithOptions:当应用程序启动执行,应用程序启动入口,只在应用程序启动执行一次。...applicationWillResignActive:在应用程序将要由活动状态切换到非活动状态时候,要执行的委托调用,如 按下 home 按钮,返回主屏幕,或全屏之间切换应用程序等。...添加到uiwindow上面 (1)直接控制器的view添加到UIWindow中,并不理会它对应的控制器 [self.window addsubview:vc.view]; (2)设置uiwindow...的根控制器,自动rootviewcontroller的view添加到window中,负责管理rootviewcontroller的生命周期 [self.window.rootviewcontroller

1.8K10

架构之路 (五) —— VIPER架构模式(一)

在此过程中,您还将了解您的iOS项目中的SwiftUI和Combine。 打开启动项目。这包括一些代码,让你开始: 当你构建其他视图,ContentView会启动它们。...实体Entity表示应用程序数据。 路由器Router处理屏幕之间的导航。这与SwiftUI不同,在SwiftUI中,视图显示任何新视图。...router处理从一个屏幕到另一个屏幕的转换,设置下一个视图所需的类。 在命令式UI范例中——换句话说,在UIKit中——路由router负责显示视图控制器或激活segue。...当您将其放置在NavigationView中,该链接将成为一个按钮,destination推送到导航堆栈上。 content块可以是任何一个SwiftUI视图。...编辑旅行名称后保存,重新启动应用程序显示更改。 4.

17.3K10

UINavigationController 导航控制器概念属性方法

controller @property(nonatomic,copy) NSArray *viewControllers; 例子: //将上面的这5个控制器添加到控制器数组中...(iOS7之后,在导航中右划会进行pop操作,设置这个的enable可以控制设置手势是否失效) @property(nullable, nonatomic, readonly) UIGestureRecognizer...*barHideOnSwipeGestureRecognizer; 10、屏幕滑动的时候是否隐藏导航栏,常用于tableView,上滑隐藏导航栏,下滑显示,带动画效果 @property (nonatomic...; 13、敲击屏幕可以隐藏与显示导航栏 @property (nonatomic, readwrite, assign) BOOL hidesBarsOnTap; 14、获取敲击屏幕的手势 @property...UIViewController *)viewController animated:(BOOL)animated; 这个方法是为了iOS方法的命名统一,在导航中,其作用和push一样 - (void)

2.1K60

iOS-UIWindow详解

iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的View,最后控制器的View添加到UIWindow上,于是控制器的View就显示在屏幕上了。...一个iOS程序之所以能显示在屏幕上,完全是因为它有UIWindow,也就是说,没有UIWindow就看不到任何UI界面。 状态栏和键盘都是特殊的UIWindow。...那么UIWindow是如何View显示到屏幕上的呢 这里有三个重要的对象UIScreen,UIWindow,UIView。...[self.window addsubview:rootVc.view];可直接控制器的view添加到UIWindow中,并不理会它对应的控制器,但是这种方法违背了MVC原则,当我们需要处理一些业务逻辑的时候就很麻烦了...当发生屏幕旋转事件的时候,UIapplication对象会将旋转事件传递给UIWindow,UIWindow又会将旋转事件传递给它的根控制器,由根控制器决定是否需要旋转。

1.9K40

iOS状态栏使用总结

目录: 一、状态栏与导航栏 二、设置状态栏显隐与字体样式 三、设置状态栏背景色 四、启动页隐藏状态栏 五、状态栏、导航栏相关的常用宏定义 相关文章:iOS导航栏的使用总结 一、状态栏与导航栏 状态栏...,需要在进入页面设置隐藏,退出页面设置显示,以保证不影响其他页面的状态栏样式。...四、启动页隐藏状态栏 App启动页如果不需要显示状态栏信息,可以设置隐藏。...设置方法依然是修改info.plist,只需要设置Status bar is initially hidden即可,将其设置为YES之后,启动暂时不显示状态栏,操作如下: ?...//屏幕高 #define ZS_ScreenHeight [[UIScreen mainScreen] bounds].size.height //判断设备类型是否iPhoneX #define

1.9K30

IOS开发基础系列】UIView专题

iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了。...在程序启动完毕之后就会调用一次,创建过程如下:         提示:应用程序启动之后,先创建Application,再创建它的代理,之后创建UIwindow。...2.把view添加到uiwindow         创建一个控制器,把view添加到uiwindow上面(有两种方式)     (1)直接控制器的view添加到UIWindow中,并不理会它对应的控制器...当发生屏幕旋转事件的时候,UIapplication对象会将旋转事件传递给uiwindow,uiwindow又会将旋转事件传递给它的根控制器,由根控制器决定是否需要旋转UIapplication->uiwindow...initWithTitle: @"next" style: UIBarButtonItemStylePlain target: self action: @selector(buttonPressed)];     //按钮添加到导航控制器默认右按钮上

43030

跟着官方文档学习3D Touch

3D Touch官网截图.png 大意如下: iOS9开始,所有新的手机都增加了一个三维的用户接口界面。 在app外,用户按压主屏幕图标就可以立即访问应用程序所提供的功能。...当用户选择了一个快捷操作项,app启动或被激活,然后app delegate对象将会接收到与当前触发的这个快速启动项相关的消息。...当用户触发相应的快捷操作项,这个参数会被传递给应用程序应用程序可以根据这个字符串(type)来对快捷操作项进行分类,然后在接收的类型中进行区分确定被处触发的快捷操作项的类型。...详细说明: 当iOS界面环境发生变化时,系统会调用这个代理方法。根据app实际需要,可以在视图控制器或者视图中实现这个代理方法,以响应一些改变。...比如:当iPhone从竖屏旋转到横屏,你也许需要调整控制器的子视图的布局,我们可以在这个方法中进行操作。默认这个方法的实现是空实现,这也就说明,我们需要重写这个代理方法的实现。

6.3K50

用这些 iOS 技巧让你的 APP 性能更佳

应用程序加载视图控制器和布局向用户显示此页面。...(查看大图) 另外需要注意的是,当 UIActivityIndicatorView放置在启动页上,不会生成动画,因为 iOS 只会将启动页 storyboard 生成静态图像并将其展示给用户。...用户退出应用程序iOS 截取的应用程序截图(查看大图) iOS 使用这些屏幕截图来给人一种假象,即应用程序仍在运行或仍在显示此特定视图,而应用程序可能已被后台终止或重新启动,但此时仍显示相同的屏幕截图...您是否曾体验过,从多任务屏幕恢复应用程序后,该应用程序显示的用户界面与多任务视图中显示的快照有什么不一样? 这是因为应用程序没有实现状态恢复机制,当应用程序在后台被杀死,显示的数据丢失。...如果视图具有透明度(即 alpha 低于 1.0),那么 iOS 需要做些额外的工作来混合视图层次结构中不同的视图层以计算出哪些内容需要展示。

3.2K30

iOS四大对象之UIWindow及四大对象之间的关系1. UIWindow使用纯代码加载根控制器2. UIWindow的创建过程3. 四大对象之间的关系

UIWindow/使用纯代码加载根控制器 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow -iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的...view,最后控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了 创建的第一个对象是:UIApplication 一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow...所以需要在AppDelegate.h里面创建一个强引用的属性,定义window。然后赋值。...主窗口同一刻只能有一个UIWindow *keyW = application.keyWindows; 1.2 对window进行操作 // 让当前UIWindow变成keyWindow,并显示出来...修改屏幕的操作代价非常大 //NS_AVAILABLE_IOS(3_2) @property(nonatomic,retain) UIScreen *screen ; //// default

1.7K30

iOS集中和解耦网络:具有单例类的AFNetworking教程

JAMES CAHALL 文章正文 当涉及iOS架构模式,模型 - 视图 - 控制器(MVC)设计模式对于应用程序的代码库的长寿和可维护性是非常有用的。...然这个iOS应用程序架构在微观层面上运行良好(应用程序的单个屏幕/部分),但随着应用程序的增长,你可能会发现自己在多个模型中添加了类似的功能。...在这个AFNetworking iOS教程中,我教你如何设置一个集中的单例联网对象,与微型MVC组件脱钩,可以在整个解耦架构应用程序中重用。 ?...网络示例 设想一个应用程序,用户必须登录才能访问任何内容。在应用程序启动,我们检查是否保存了一个身份验证令牌,如果是,则执行一个GET请求到我们的API,以查看该令牌是否过期。...请注意,在任何需要启动检查身份验证的应用程序中,这个代码片段几乎都可以使用。

1.7K10
领券