许久不写UI,对UI的很多东西都生疏了,最近使用导航栏的各种场景做一些总结。 1.导航栏的显示与隐藏 导航栏的显示与隐藏,分两种情况: 1.从不显示导航栏的页面push到显示导航栏的页面。...2.从显示导航栏的页面Push到不显示导航栏的页面。 注意: 1.如果导航栏不显示时,系统的侧滑返回功能无效。...针对以上两种情况分别处理,整个Push过程都假设是从A页面跳转到B页面 1.1 从不显示导航栏的页面Push到显示导航栏的页面。 关于导航栏的显示,是否顺滑,是通过如下两个方法来控制。...newChildVCs.count > 1); [self setViewControllers:newChildVCs animated:animated]; } 当然了,除了上面这些场景,还可以扩展出一些其他的场景...或者我们知道将要返回的页面的类型,直接pop回指定页面。 扩展出来的其他方法都在Demo中了,有兴趣的可以看一下。 地址是:HLProject
: 到此,info.plist的配置即完成了; 或者将info.plist文件以 Source code 方式打开,添加以下代码: CFBundleIconskey>...从上面的示意图可以发现,在设置icon的时候,会有个系统弹框,这样有时候会不太友好,我们可以使用Runtime,对UIViewController进行扩展来隐藏这个弹框: // UIViewController...+LQNoPresent.h #import @interface UIViewController (LQNoPresent) @end // UIViewController+LQNoPresent.m...#import "UIViewController+LQNoPresent.h" #import @implementation UIViewController (LQNoPresent)...NSLog(@"message : %@",((UIAlertController *)viewControllerToPresent).message); UIAlertController
介绍 UIViewController 可以理解为 App 的界面,负责管理 UIView 中显示的内容和用户的交互,主要有以下作用: 负责创建和管理 UIView。 响应用户与视图的交互。...UINavigationItem是 UIViewController 的属性,用于配置当前 UIViewController 显示时UINavigationBar上显示的内容。...如果前一个 UIViewController 设置了title属性,则显示标题文字封装的返回按钮。 如果以上都未设置,则展示文字Back封装的返回按钮。...注意:默认情况下返回按钮和左侧按钮是不同时显示的,只显示返回按钮而不显示左侧按钮。...颜色问题 UITabBar的颜色 可以通过 UITabBar 的barTintColor设置。 渲染颜色 图片一般由设计师统一设计,需要设置标题文字颜色以适应图片。
需求:换图标,用户无感 1.分析: 对于iOS,是开发了API可以换图标,但是有规定的,就是你要换的图标是要在APP里面内置的,也就是说你要换的APPicon,是提前放在APP 包里面的...,120*120的就行了,然后名字要和plist里面的对应,我这里用的是MayOneIcon;(注)这个名字在plist里面有俩个地方需要修改。 ...dispatch_get_main_queue(), ^{ [self exchangealterMethod]; }); } + (void)dy_presentViewController:(UIViewController...NSLog(@"message : %@",((UIAlertController *)viewControllerToPresent).message); UIAlertController...completion:completion]; } + (void)exchangealterMethod{ Method presentM = class_getInstanceMethod(UIViewController.class
Demo:更换图标demo,如有问题,请随时联系 需求:换图标,用户无感 1.分析: 对于iOS,是开发了API可以换图标,但是有规定的,就是你要换的图标是要在APP里面内置的,也就是说你要换的...,120 * 120的就行了,然后名字要和plist中里面的对应,我这里用的是MayOneIcon;(注)这个名字在plist中里面有俩个地方需要修改。 ...dispatch_get_main_queue(), ^{ [self exchangealterMethod]; }); } - (void)dy_presentViewController:(UIViewController...NSLog(@"message : %@",((UIAlertController *)viewControllerToPresent).message); UIAlertController...completion:completion]; } - (void)exchangealterMethod{ Method presentM = class_getInstanceMethod(UIViewController.class
在iOS开发过程中,我们经常性会需要获取当前页面的ViewController,然后利用ViewController进行一些操作,例如在最顶层的ViewController上展示一个UIAlertController...*topmostVC = [self topViewController]; 方法二: //获取当前屏幕显示的viewcontroller - (UIViewController *)getCurrentVC...currentVC; } - (UIViewController *)getCurrentVCFrom:(UIViewController *)rootVC { UIViewController...三 扩展 如果用到的场景主要是vc里,可以弄成类别如下: #import "UIViewController+Helper.h" @property (nonatomic, strong ,readonly...) UIViewController * _Nullable currentVC; //当前屏幕显示的viewcontroller -(UIViewController *)currentVC{ UIViewController
放置此类设置代码的一个非常常见的地方是子类。只需将您需要设置的对象子类化,覆盖其初始化程序并在那里进行设置——完成!...iOS上的UIKit和Mac上的AppKit都为我们提供了创建具有原生外观的UI所需的所有基本核心构建块,但是我们经常需要自定义这些外观以适合我们的设计并为其定义布局。...此外,由于扩展名可以限制为单个文件(通过添加private关键字),因此我们可以轻松地为需要创建特定视图的应用程序部分设置扩展名,只有一个功能即可: //我们只会在单个视图控制器中使用它,因此我们将范围设为私有...在这里,我们使用这种方法来实现一个计算属性,该属性返回一个加载视图控制器,用于显示加载旋转框: extension UIViewController { static var loading:...尤其是在测试依赖于特定模型配置的代码时,很容易以充满样板的测试结束,这使它们更难以阅读和调试。
要么以安全的默认方式完毕。 由于应用程序结构是通用的,开发者通过框架提供的钩子或其他方式如子类化将其特殊化。...来改动和扩展其通用行为。 特定于应用的行为加入到框架的一种方式。就是创建框架类的自定子类。子类填补了其超类中的空隙,提供了框架类所缺少的部分。 自定子类的实例。...在ios 的UIKit 框架中的UIViewController 类是全部视图控制器对象的基础类, 每一个视图控制器对象是 UIViewController 类的实例。...它提供了一些默认功能,用于加载视图、呈现视图和旋转视图,以响应设备的旋转以及几个其它标准的系统行为。应用程序实现时须要对UIViewController 类进行子类化。...视图控制器还用来管理应用程序视图的子层次结构。 由于 iOS 应用程序显示内容的空间非常有限,视图控制器也提供了所须要的基础结构,从一个视图控制器中撤出视图。
iOS13适配【灵活控制模态展示的视图样式】(全屏/下滑返回)文中提供完整demo源码 全局hook presentViewController方法 // // UIViewController+ERPPresent13...Whether or not to set ModelPresentationStyle automatically, Default is YES, but UIImagePickerController/UIAlertController...K_automaticallySetModalPresentationStyle { if ([self isKindOfClass:[UIImagePickerController class]] || [self isKindOfClass:[UIAlertController...spm=1001.2014.3001.5501 问题:没有上拉的时候加载更多控件的文案也显示出来了 修复方式1:修改视图距离底部的高度 [self.vcView mas_makeConstraints...- 0); make.top.equalTo(weakSelf.view).offset(0); if(isHasSafeAreaInsets()){// 避免没有上拉的时候加载更多控件的文案也显示出来了
不知道大家注意到没有,iPhone自带的日历和始终App的图标是实时显示当日日期和当时的时间的,时间的秒钟还会走动,这其实就做到了在安装完App后,还能自由地变更App的图标,而现在,我们普通的开发者也可以实现了...CFBundleAlternateIcons 就是放我们可能会变化的一些图标图片了,它是一个词典,下面包含很多子词典,子词典的键名其实就是图片的名字,值与上面的 Primary 一样,放不同尺寸的图片数组...一定要注意键就是图片的名字,这样在调用上面的API传入图片名时才能够找到对应的键值对,否则会变更失败,控制台会显示找不到文件。 使用方法 首先我们在界面上放两个按钮,点击响应就是要更换成不同的图标。...去掉变更图标时的提示框 这个提示框是用 UIAlertController 来实现的,而所有的 UIAlertController 都是通过 presentViewController: animated...- (void)ox_presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion
容器ViewController收集来自其他ViewController(称为子ViewController)的信息并以便于导航的方式呈现或以不同方式呈现这些ViewController的内容。...当你子类化时,你需要添加任何你需要的逻辑和方法来提取数据,并将其传递给ViewController或其他应用程序的部分。...例如,UINavigationController对象显示来自子ViewController的内容以及由导航控制器管理的导航栏和可选工具栏。...容器型ViewController通常作为root ViewController安装在窗口中(如图所示),但它们也可以以模态方式呈现,或者作为其他容器的子项安装。容器负责适当地定位其子视图。...UIDocument对象负责协调数据的加载和保存,而UIViewController对象协调屏幕上的视图显示。
根据textfield的内容显示不同button的图像 image.png import UIKit class ViewController:UIViewController,UITextFieldDelegate...let alert = UIAlertController(title:“Information”,message:message, preferredStyle:UIAlertControllerStyle.alert
//let vc = ViewController(nibName: "ViewController", bundle: nil) bundle:nil]; // 让该程序的窗口加载、并显示...可以在自定义cell中处理点击状态下的显示 var label1 :UILabel? var label2 :UILabel?...,选中的是蓝色的,下面修改成橙色: //图片文字一起变色 self.tabBar.tintColor = UIColor.orangeColor() 如何显示原始图片的颜色和图案?...因为只有init()是私有的,才能防止其他对象通过默认构造函数直接创建这个类对象,确保你的单例是真正的独一无二。...{ var uploadAlertController : UIAlertController?
前边是第一次的逻辑,后边是写代码时候的逻辑,更简化了一些 下边附上核心代码: - (void)compareVersionLocalVerson:(NSString *)localVerson appVerson...localArray.count, appArray.count); BOOL needUpdate = NO; for(int i=0;i以最短的数组长度为遍历次数...}else{ } } 非强制更新代码 //可选更新 -(void)canChooseUpdate{ //弹出提示更新弹框 UIAlertController...*alertVc = [UIAlertController alertControllerWithTitle:@"亲,有新版本了" message:@"更稳定、快速、多彩的功能和体验,点击立即更新!"...[alertVc addAction:action2]; [alertVc addAction:action1]; UIViewController
iOS7适配 状态栏设置 首先,需要在Info.plist配置文件中,增加键:UIViewControllerBasedStatusBarAppearance,并设置为YES; 然后,在UIViewController...在iOS8里面,官方提供了新的类UIAlertController来替换UIActionSheet and UIAlertView。...示例代码如下: UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"My Alert" message:@"...classes有关,目的是统一屏幕在各个尺寸各个方向上的显示。...如果你在iOS 8 里面使用UIActionSheet and UIAlertView 可能会出现一些很奇怪的问题,建议在iOS 8 里面使用UIAlertController,iOS 8 之前使用UIActionSheet
32、判断一个view是否为另一个view的子视图,或者是子试图的子试图。...33、获取手机RAM容量 34、在UITextView中显示html文本 35、选中textField或者textView所有文本(我这里以textView为例) 36、隐藏UITextView/UITextField...自己键盘打出的 % 汉字形式下的还是会报警告,并且不会显示出来.把上文的粘贴过去使用吧!...,或者是子试图的子试图。...// 子类化UITabBarViewController,我这里以修改tabBar高度为例,重写viewWillLayoutSubviews方法 #import "WZBTabBarViewController.h
如果某些特殊情况下非得调整 contentInset 不可的话,可以通过下面方式让H5页面恢复正常显示: /**设置contentInset值后通过调整webView.frame让页面恢复正常显示...从 crash 堆栈可以看出是 WKWebView 回调函数: + (void) presentAlertOnController:(nonnull UIViewController*)parentController...UIViewController 出现(push或present)的动画尚未结束,alert 框可能弹不出来,completionHandler 最后没有被执行,导致 crash。...has finish push or present animation*/) { completionHandler(); return; } UIAlertController...style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { completionHandler(); }]]; if (/*UIViewController
如果某些特殊情况下非得调整contentInset不可的话,可以通过下面方式让H5页面恢复正常显示: /*设置contentInset值后通过调整webView.frame让页面恢复正常显示 *参考...从crash堆栈可以看出是WKWebView回调函数: + (void) presentAlertOnController:(nonnull UIViewController*)parentController...alert框可能弹不出来,completionHandler最后没有被执行,导致crash;另一种情况是在WKWebView一打开,JS就执行window.alert(),这个时候由于WKWebView所在UIViewController...has finish push or present animation*/) { completionHandler(); return; } UIAlertController...style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { completionHandler(); }]]; if (/*UIViewController
UIViewController 苹果极力推崇MVC这种开发模式,并且帮我们实现了一个叫做UIViewController的控制器,它是UIKit的一部分。...UIViewController提供一些需要的方法和属性,通常我们在使用的时候只需要将UIViewController子类化即可。...viewDidLoad()是UIViewcontroller默认的方法。...如: self.title =@"登录"; Table View Table views是用来显示滚动视图的控件,滚动视图是iOS Apps中最常见的用户界面。...苹果公司增加了一个警告注释,说如果组的个数是零,那么就不会显示行,组包含行cell,没有了组section,行cell也就不会被显示出来。
手动 将 SwifterSwift 文件夹添加到您的 Xcode 项目以使用所有扩展或特定扩展。 对于您的 test targets,您还可以添加 XCTest 文件夹。...UIActivity extensions UIAlertController extensions UIApplication extensions UIBarButtonItem extensions...extensions UITabBar extensions UITableView extensions UITextField extensions UITextView extensions UIViewController...SwifterSwift 是一个包含 500 多个属性和方法的库,旨在扩展 Swift 的功能和生产力,并忠实于原生的 Swift API 设计指南。...查看项目中的 Examples.playground 以获取一些很酷的示例! 文档 所有扩展的文档和示例都在 swifterswift.com/docs 参与其中 我们希望得到您的反馈。
领取专属 10元无门槛券
手把手带您无忧上云