iOS开发——UI进阶篇(十四)modal
一、modal与push
modal从下面往上盖住原来的控制器,一般上一个控制器和下一个控制器没有什么关联时用modal,比如联系人的加号跳转页面,任何控制器都可以用modal
push一般是上下文有关联时用,(比如设置界面的通用跳转页面)导航控制器才能用push
A控制器modal出B控制器,那么A控制器就会强引用B,如果不强引用,无法处理B的业务逻辑(比如点击按钮回答A),会报野指针错误
// modal另一个界面
- (IBAction)modal:(id)sender { // 创建modal的控制器
OneViewController *oneVc = [[OneViewController alloc] init]; // 把新创建的控制器的View添加到窗口上
UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
[keyWindow addSubview:oneVc.view]; // 从下往上钻的动画
// 首先让oneVc的view显示在窗口的底部
oneVc.view.transform = CGAffineTransformMakeTranslation(, keyWindow.bounds.size.height); // 动画,往上移动,还原形变
// [UIView animateWithDuration:0.5 animations:^{
// // 还原形变
// // CGAffineTransformIdentity清空所有的形变,所有的形变参数都是0
// oneVc.view.transform = CGAffineTransformIdentity;
// } completion:^(BOOL finished) {
// self.presentedVC = oneVc;
// }]; // A控制器modalB控制器,B控制器会被A控制器强引用
// modal一个控制器
[self presentViewController:oneVc animated:YES completion:^{ }]; } // modal:会把新控制器的view添加窗口上,但是不会修改窗口的根控制器
// modal:会把新控制器强引用,谁modal,谁就强引用,为什么要强引用,如果不强引用,新创建的控制器就会被销毁,就不能处理modal出来界面的业务逻辑.
关闭modal出来的控制器
- (IBAction)dismiss:(id)sender {
// modal出谁,谁就可以dismiss
[self dismissViewControllerAnimated:YES completion:nil];
}
iOS开发——UI进阶篇(十四)modal的更多相关文章
- iOS开发——UI进阶篇(四)tableView的全局刷新,局部刷新,左滑操作,左滑出现更多按钮,进入编辑模式,批量删除,自定义批量删除
首先创建项目,在storyboard如下布局控件,设置好约束 然后创建cell模型类XMGWineCell数据模型类XMGWine创建UITableView,设置数据源协议,实现数据源方法懒加载数据这 ...
- iOS开发——UI进阶篇(十五)Quartz2D介绍
一.Quartz2D简介 1.什么是Quartz2DQuartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作绘制图形 : 线条\三角形\矩形\圆\弧等绘制文字绘 ...
- iOS开发——UI进阶篇(三)自定义不等高cell,如何拿到cell的行高,自动计算cell高度,(有配图,无配图)微博案例
一.纯代码自定义不等高cell 废话不多说,直接来看下面这个例子先来看下微博的最终效果 首先创建一个继承UITableViewController的控制器@interface ViewControll ...
- iOS开发——UI进阶篇(十六)Quartz2D实战小例子
一.画线 只有在drawRect中才能获取到跟view相关联的上下文 - (void)drawRect:(CGRect)rect {} 一条线 // 1.获取跟当前View相关联的layer上下文(画 ...
- iOS开发——UI进阶篇(十二)事件处理,触摸事件,UITouch,UIEvent,响应者链条,手势识别
触摸事件 在用户使用app过程中,会产生各种各样的事件 一.iOS中的事件可以分为3大类型 触摸事件加速计事件远程控制事件 响应者对象在iOS中不是任何对象都能处理事件,只有继承了UIResponde ...
- iOS开发——UI进阶篇(十九)UISearchBar控件简介
最近用到搜索功能.总结一下 搜索,无疑可以使用UISearchBar控件! 那就先了解一下UISearchBar控件吧! UISearchBar控件就是要为你完成搜索功能的一个专用控件.它集成了很多你 ...
- iOS开发——UI进阶篇(十八)核心动画小例子,转盘(裁剪图片、自定义按钮、旋转)图片折叠、音量震动条、倒影、粒子效果
一.转盘(裁剪图片.自定义按钮.旋转) 1.裁剪图片 将一张大图片裁剪为多张 // CGImageCreateWithImageInRect:用来裁剪图片 // image:需要裁剪的图片 // re ...
- iOS开发——UI进阶篇(十)导航控制器、微博详情页、控制器的View的生命周期
一.导航控制器出栈 1.initWithRootViewController本质 UIViewController *vc = [[OneViewController alloc] init]; // ...
- iOS开发——UI进阶篇(十七)CALayer,核心动画基本使用
一.CALayer简介 1.CALayer在iOS中,文本输入框.一个图标等等,这些都是UIView你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个其实UIView之所以 ...
随机推荐
- JS-事件之鼠标、键盘都能控制的下拉选框效果
<script type="text/javascript"> window.onload=function(e){ var box=document.getEleme ...
- gcc编译与gdb调试简要步骤
http://blog.chinaunix.net/uid-24103300-id-108248.html 一.Linux程序gcc编译步骤: Gcc编译过程主要的4个阶段: l 预处理阶段,完成宏定 ...
- Linux Canbus调试笔记
STM32之CAN---错误管理分析 牛人博客 http://blog.csdn.net/flydream0/article/details/8161418 CAN总线在嵌入式Linux下驱 ...
- Linux开放1521端口允许网络连接Oracle Listene
症状:1. TCP/IP连接是通的.可以用ping 命令测试. 2. 服务器上Oracle Listener已经启动. lsnrctl status 查看listener状态 lsnrctl s ...
- 删除ibus之后导致系统设置进不了
sudo apt-get instal ubuntu-desktop 快捷键调出sogou拼音,默认为"ctrl+,"
- Linux 普通进程 后台进程 守护进程
一.普通进程与后台进程 默认情况下,进程是在前台运行的,这时就把shell给占据了,我们无法进行其它操作.对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'& ...
- array_filter移除空数组
$arr = array( "0"=> "564645", "1"=>"", "2"=& ...
- Fragment碎片的创建和动态更新
Fragment,在平板应用中较为参见,把视图分为两个甚至多个模块. 一,一个简单的fragment 1.创建两个局部文件,用于等待被调用 (1)left_fragment (2)right_frag ...
- UI控件之ListView
一,一个简单的TextView列表 public class FirstActivity extends Activity { private String[] data = {"Apple ...
- [Unity] 精灵动画制作中需要注意的一些问题
1. 为精灵添加了动画控制器,UpdateMode设置为了Animate Physics,精灵就不受控制了,在游戏中不断的晃动,不受重力影响向下掉等奇葩问题出现了. 解决办法: 此类问题,除掉刚体设置 ...