] initWithTitle:@"返回"style:UIBarButtonItemStylePlain target:self action:@selector(back)]; 复制代码 //自定义视图...侧滑手势失效的问题 self.navigationController.interactivePopGestureRecognizer.delegate = (id)self; // 控制手势在根控制器时不触发...属性可以返回,不同alpha的图片;可用于动态改变导航条的透明度 + (UIImage *)imageWithColor:(UIColor *)color{ CGRect rect = CGRectMake...UIGraphicsEndImageContext(); return image; } 复制代码 全局设置导航栏外观 //全局设置导航栏主题,只在AppDelegate中有效, 或者是UINavagaitonController中的...但是如果用navigationBar.hidden隐藏导航栏,我们可以继续使用navigationBarHidden提供的滑动pop效果,如果用navigationBarHidden,这个操作将无效;但前者
iOS 系统中的视图动画 动画为用户界面的状态转换提供了流畅的可视化效果, 在 iOS 中大量使用了动画效果, 包括改变视图位置、 大小、 从可视化树中删除视图, 隐藏视图等。...在 iOS 系统中, Core Animation 提供了内置的动画支持, 创建动画不需要任何绘图的代码, 你要做的只是激发指定的动画, 接下来就交给 Core Animation 来渲染, 总之, 复杂的动画只需要几行代码就可以了...哪些属性可以添加动画效果 根据 iOS 视图编程指南中说明, UIView 内置支持为下列属性添加动画效果: Frame 可以改变视图相对于上一级视图的位置和大小。...(如果视图已经经过了缩放、 旋转、平移之类的变换, 则需要修改 Center 和 Bounds 属性) Bounds 改变视图大小。 Center 改变视图相对于上级视图的位置。...为视图的属性变化添加动画 为了给属性的变化添加动画效果, 需要把修改这些属性的代码放到指定的动画代码段 (animation block) 中。
第一种情形截图 这种是最最普通的截图,针对一般的视图上添加视图的情况,基本都可以使用。...源码: /** 普通的截图 该API仅可以在未使用layer和OpenGL渲染的视图上使用 @return 截取的图片 */ - (UIImage *)nomalSnapshotImage...OpenGL渲染出来的,那么使用上面的方式就无法截图到OpenGL渲染的部分,这时候就要用到改进后的截图方案: /** 针对有用过OpenGL渲染过的视图截图 @return 截取的图片 */...= self.frame; [self drawViewHierarchyInRect:rect afterScreenUpdates:YES]; UIImage *snapshotImage.../** 截图 以UIView 的形式返回(_UIReplicantView) @return 截取出来的图片转换的视图 */ - (UIView *)snapshotView { UIView
https://blog.csdn.net/u010105969/article/details/53333748 iOS7之后rootView(即根视图)的原点是(0,0),当根视图控制器是NavigationController...我们看到红色视图的Y坐标为0,由此也能得出根视图的原点是(0,0)。我们也可以通过看视图调试器看到根视图的原点,如图: ? 然而当我设置一个属性之后,其他代码不变,我们会看到红色视图的位置发生了变化。...设置属性代码: self.navigationController.navigationBar.translucent = NO; 效果图: ?...此时我们看到红色视图的在navigationBar下方,即Y坐标为0。由此我们推断根视图的坐标原点发生了变化变成了(0,64),我们同样可以同时视图调试器看到,如图: ?...,这个UIImage的一个分类中的方法: + (UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size { CGRect rect
的视图的集合,是一个栈结构,当我们要 pop 到某个 ViewController 的时候,直接用 for in 去遍历 viewControllers 即可: for (UIViewController...animated:YES]; } } 通过 View 获取 ViewController 为了做到数据与视图的分离,我们一般会将一个页面的局部视图以自定义 UIView 的方式独立出来,如果在该视图中有触发事件...(事件处理不需要父视图的上下文),就会遇到在 UIView 中获取 UIViewController 的情况,可以写一个 UIView 的范畴 UIView(UIViewController): #pragma...', :git => 'http://10.3.4.127:8888/ios_team/zuchelib_category.git', :tag => ‘0.1.2’ 如果在自定义的框架下,我们使用#if...DEBUG这种定义模式来区分,那么在默认Pods中是无效的。
对于父级VC与子级VC分别有navigationController的情况,即不是使用push方式加载子VC,而是通过AddChildViewController的方式添加的场景,则父级导航条会覆盖在子级导航条上面...,所以需要在载入时把父级导航条做隐藏处理: 1.2 navigationItem 在含有导航条的ViewController中,VC的navigationItem与VC.navigationController... 将NavigationBar设置透明(仅将指定视图控制器进行透明处理),步骤如下: 1.在视图控制器的头文件中实现UINavigationControllerDelegate,例如...NavigationController中,而不是内容Controller中,切记!!!...否则会导致页面切换时选中状态不准确 TabBar与导航条混用时,TabBarItem的设置是在NavigationController中,而不是内容Controller中,切记!!!
toc 现象: iOS13黑暗模式开启后,app显示会出现很多意外显示情况。暂时屏蔽是最好的选择。...当开启黑暗模式,且在项目的target对应的info.plist中添加以下设置时(禁用黑暗模式): UIUserInterfaceStyle Light的info.plist中添加以下设置: UIViewControllerBasedStatusBarAppearance 再运行就可以看到状态栏了...在相关控制器重写状态栏样式代码 - (UIStatusBarStyle)preferredStatusBarStyle{ return UIStatusBarStyleLightContent; } 对于常见视图结构...( tabbarVC 下多个子导航控制器),可放在自定义导航控制器中(放在 tabbarVC 无效)。
//iOS7之后,在导航中右划会进行pop操作,设置这个的enable可以控制设置手势是否失效 @property(nullable, nonatomic, readonly) UIGestureRecognizer... *interactivePopGestureRecognizer; 四、iOS8后导航的新特性 //这个方法是为了iOS方法的命名统一,在导航中,其作用和push一样 - (void)showViewController...(nonatomic, readonly, assign) UITapGestureRecognizer *barHideOnTapGestureRecognizer; iOS8中增加的这些方法,不得不说着实在用户体验生进了一大步...,从中也可以看出apple对于用户体验度的用心。...; //视图已经展示时调用的方法 - (void)navigationController:(UINavigationController *)navigationController didShowViewController
iOS开发中活动视图控制器UIActivityViewController的应用 在iOS开发中,UIActivityViewController常用来弹出分享面板,其实除了用来社会化分享,UIActivityViewController...:@"https://www.baidu.com"]; //活动的图片 UIImage * image = [UIImage imageNamed:@"ios"]; UIActivityViewController...> *excludedActivityTypes; //下面这些方法在iOS8后被弃用 在iOS6-iOS8之前可用 //设置活动行为结束后回调的block /* typedef void (^UIActivityViewControllerCompletionHandler...UIActivityType const UIActivityTypeAirDrop;//AirDrop UIActivityType const UIActivityTypeOpenInIBooks;//在IBooks中打开...- (void)prepareWithActivityItems:(NSArray *)activityItems; //子类实现 返回一个视图控制器作为处理活动的模态视图 活动处理完成后需要调用activityDidFinish
须要创建两个视图控制器(ViewController根视图控制器,SecondViewController子视图控制器),然后放在导航控制器栈中。...事实上它们有的时不透明有的时透明有的时半透明,但不知为何无效果 self.navigationController.navigationBar.barStyle=UIBarStyleDefault...//视图的x和y无效。...,所谓跳转,事实上就是往导航控制器栈中PUSH或者POP一个视图控制器,这样在最上面的视图控制器就变了,这样视图也跟着变了,由于仅仅显示在栈顶得那个视图控制器的视图 //所以(1)控制所谓的跳转...事实上是导航控制器在控制,在里面的元素都能够通过navigationController属性获取到它们所在的导航控制器 //所以(2)获取到导航控制器之后,使用Push的那个方法,往栈里面放一个视图控制器
前言: 在我们iOS开发的过程中,你要是知道一些特别的小技巧的话,其实是可以帮你省很多事的,当然这东西也不需要我们专门去记,估计没有几个开发人员喜欢死记硬背,有需要,上网找,边学边用才是技巧的正确的打开方式...// 贝塞尔曲线 给矩形可添加圆角的方法 UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners...看看git上它的一个展示效果: image.png 六:你想给你的WebView添加一个头部视图 其实做这个效果有很多很多的方式,你可以把你的WebView加到ScrollView上去,在给它加一个头部的...image.png image.png 这个其实很简单,你只需要处理一下 TableView 的尾部视图,赋一个初始化的View给它就OK了。...= [UIImage new]; 还有,导航这一块的,比如根据下面滑动视图的滑动来改变导航的透明度这类利用 Runtime 解决的问题,前连天在总结 Runtime 的时候有说过怎么做,感兴趣的朋友可以去翻翻
:显示时间、电池等信息 导航栏:显示app页面标题,返回按钮等 iOS7之前:状态栏与导航栏是分开的; iOS7之后:状态栏与导航栏合在一起;导航部分总高度(64)= 状态栏高度(20) +导航栏内容高度...通过修改info.plist中的View controller-based status bar appearance属性为NO或者YES,状态栏的设置可区分为全局控制和局部控制。...此时全局设置的操作都是无效的,需要分页设置才能修改其样式,即:在每个视图控制器或者控制器基类中使用如下代码: - (UIStatusBarStyle)preferredStatusBarStyle {...preferredStatusBarStyle]; } 方法2:放弃preferredStatusBarStyle 我们可以不使用preferredStatusBarStyle方法,而且直接在当前视图控制器中调用如下方法修改状态栏...,状态栏文字为白色 self.navigationController.navigationBar.barStyle = UIBarStyleBlack; 三、设置状态栏背景色 iOS7之后的状态栏和导航栏融合在一块
UINavigationBar是一个我们在开发中必定会碰到的控件,用好它能帮助我们自定义导航栏的样式,所以今天讲解一下UINavigationBar的用法。...设置导航栏的标题 这个直接是很简单的设置,一行代码搞定 self.navigationItem.title = @"导航栏标题"; 设置导航栏背景颜色 导航栏的背景颜色,也是很简单的 自己替换代码中的颜色即可...,我们设置的返回按钮都是蓝色的默认颜色,那么到底该怎么更改这些按钮的颜色呢 设置返回按钮的颜色,只设置tintColor的颜色就好了 self.navigationController.navigationBar.tintColor...侧滑关闭失效的问题 self.navigationController.interactivePopGestureRecognizer.delegate = (id)self; } 这里需要注意的地方有三点...rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f); UIGraphicsBeginImageContext(rect.size); CGContextRef
)和UIViewController紧密的结合了起来 总结: NavigationController管理的东西: NavigationController管理多个Controller NavigationController...(iOS7之后,在导航中右划会进行pop操作,设置这个的enable可以控制设置手势是否失效) @property(nullable, nonatomic, readonly) UIGestureRecognizer...*> *)viewControllers animated:(BOOL)animated; 3、管理视图控制器操作 (1)压入新的视图控制器 - (void)pushViewController:(...UIViewController *)viewController animated:(BOOL)animated; 这个方法是为了iOS方法的命名统一,在导航中,其作用和push一样 - (void)...UIViewController *)viewController animated:(BOOL)animated; (2)视图已经展示时调用的方法 - (void)navigationController
解决方案: 尽量将子视图的layout操作放到layoutSubviews方法中;另外,可以在cell初始化时手动设置宽度: - (instancetype) initWithStyle...2.4.1.1 使用不透明视图 不透明的视图可以极大地提高渲染的速度。...而且必须在父类TableCell的直接继续类中调用才起作用 2.4.1.3 减少视图的数目。 ...当然,最佳的解决办法还是继承UITableViewCell,并在其drawRect:中自行绘制: - (void) drawRect: (CGRect)rect { if (image) { ...在实现drawRect:的时候,它的rect参数就是需要绘制的区域,这个区域之外的不需要进行绘制。
; 1.全局设置 全局设置一般的都是在AppDelegate中设置,这样整个app都会生效,相关的代码与效果图如下: //1.设置导航栏背景颜色 [[UINavigationBar appearance...导航栏视图层级图 从图中可以看出,导航栏的底部分割线是一个UIImageView对象,而且高度只有0.5,所以我们可以据此获取到导航栏的底部分割线对象,在一个视图控制器中实现此需求,代码如下: #import...,用于优化滑动类视图(继承于UIScrollView的视图)在视图控制里的显示: iOS系统的导航栏UINavigationBar与标签栏UITabBar默认都是半透明模糊效果,在这种情况下系统会对视图控制器的...但是对于普通的视图,此时我们仍然需要注意:非滑动视图的布局仍然要考虑导航栏和标签栏高度,注意不被遮挡,比如布局的时候加上导航栏高度,以免内容被导航栏遮挡。...,那么视图控制器里的控件就会默认从(0,64)开始布局了,设置导航栏不透明的方法如下: self.navigationController.navigationBar.translucent= NO;
iOS开发中UITableViewCell点击时子视图背景透明的解决方法 在做iOS项目的开发中,UITableView控件的应用十分广泛。...时,Cell上的子视图发生了奇怪的变化,其背景色变透明了,如果添加在Cell上的子视图只是一个色块,那么我们看起来,这个子视图好像莫名其妙的消失了一样。...如果开发者不进行设置,UITableViewCell中的selectionStyle属性默认风格为UITableViewCellSelectionStyleBlue。...这时,如果用户点击或者选中了某个Cell,系统会自动将其上子视图的背景色改成透明以便统一Cell的整体背景颜色。...如果需要使用Cell的选中风格同时又不想让Cell上的子视图收到影响,我们可以继承UITableViewCell后在其中覆写父类的如下两个方法,在这些方法中重新设置子视图的背景色: //这个方法在Cell
总第294篇 2018年 第86篇 前言 目前,开源社区和业界内已经存在一些 iOS 导航栏转场的解决方案,但对于历史包袱沉重的美团 App 而言,这些解决方案并不完美。...除了上面说到的两点,pop 过程中还需要注意一点,那就是从 B 返回到 A 的过程中,A 视图控制器的 viewDidLoad 方法并不会被调用。...在 NavigationController 的 Stack 存储结构下,每当 Stack 中的 ViewController 修改了导航栏,势必会影响其他 ViewController 展示的效果。...等到页面 B 调用 viewDidAppear: 的时候,转场库会将假的导航栏样式设置到真的导航栏中,并将假的导航栏从视图层级中移除,最终将真的导航栏显示出来。...等到页面 A 调用 viewDidAppear: 的时候,转场库会将假的导航栏样式设置到真的导航栏中,并将假的导航栏从视图层级中移除,最终将真的导航栏显示出来。
最新示例: 点击下载 注意: 自定义视图控制器的转场动画为iOS7 + 通过 UIViewControllerTransitioningDelegate协议, UINavigationControllerDelegate...协议和 UITabBarControllerDelegate 协议提供的系统级别的支持.这个库的意义在于定义了常用的动画效果,并封装了常用的交互操作,简化了iOS交互式转场动画的编码量!...文件夹下所有代码复制到工程中即可....使用动画控制器 AnimationControllers 文件夹中提供了许多可以整合进你的工程中的动画控制器: 自定义模态控制器显示/隐藏的动画 UIViewControllerTransitioningDelegate...: // 实例变量,通常在你的初始化方法中初始化它们.
https://blog.csdn.net/u010105969/article/details/53504356 在iOS开发中如果我们利用的navigationController(几乎每个项目都有吧...注意点二:如果再根视图控制器也进行侧滑,那么程序会出现问题,无法再跳转到下一页。...要想避免上述两个注意点中的问题,我们需要自定义NavigationController,并在NavigationController中做些操作: 在viewDidLoad方法中: self.delegate...= self; _popDelegate = self.interactivePopGestureRecognizer.delegate; 并且实现协议中的方法: - (void)navigationController...同样是在自定义的NavigationController中进行操作。
领取专属 10元无门槛券
手把手带您无忧上云