030在布局中实现一个模态对话框

效果如下:

ViewController.h

1 #import <UIKit/UIKit.h>
2
3 @interface ViewController : UIViewController
4 @end

ViewController.m

 1 #import "ViewController.h"
 2 #import "ModalDialog.h"
 3
 4 @interface ViewController ()
 5 - (void)layoutUI;
 6 - (void)modalDidPush;
 7 @end
 8
 9 @implementation ViewController
10
11 - (void)viewDidLoad {
12     [super viewDidLoad];
13
14     [self layoutUI];
15 }
16
17 - (void)didReceiveMemoryWarning {
18     [super didReceiveMemoryWarning];
19     // Dispose of any resources that can be recreated.
20 }
21
22 - (void)layoutUI {
23     self.view.backgroundColor = [UIColor whiteColor];
24     UIButton *btnModal = [UIButton buttonWithType:UIButtonTypeRoundedRect];
25     btnModal.frame = CGRectMake(0, 0, 150, 40);
26     CGPoint newPoint = self.view.center;
27     newPoint.y += 10;
28     btnModal.center = newPoint;
29     btnModal.layer.masksToBounds = YES;
30     btnModal.layer.cornerRadius = 10.0;
31     btnModal.layer.borderColor = [UIColor brownColor].CGColor;
32     [btnModal setTitle:@"调用模态对话框" forState:UIControlStateNormal];
33     [btnModal addTarget:self action:@selector(modalDidPush) forControlEvents:UIControlEventTouchUpInside];
34     [self.view addSubview:btnModal];
35 }
36
37 - (void)modalDidPush {
38     ModalDialog *dialog = [[ModalDialog alloc] init];
39     dialog.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
40     [self presentViewController:dialog animated:YES completion:nil];
41 }
42
43 @end

ModalDialog.h

1 #import <UIKit/UIKit.h>
2
3 @interface ModalDialog : UIViewController
4 @end

ModalDialog.m

 1 #import "ModalDialog.h"
 2
 3 @interface ModalDialog ()
 4 - (void)goodbyeDidPush;
 5 - (void)layoutUI;
 6 @end
 7
 8 @implementation ModalDialog
 9
10 - (void)viewDidLoad {
11     [super viewDidLoad];
12
13     [self layoutUI];
14 }
15
16 - (void)didReceiveMemoryWarning {
17     [super didReceiveMemoryWarning];
18     // Dispose of any resources that can be recreated.
19 }
20
21 - (void)goodbyeDidPush {
22     //关闭模态对话框
23     [self dismissViewControllerAnimated:YES completion:nil];
24 }
25
26 - (void)layoutUI {
27     UILabel *lblMessage = [[UILabel alloc] initWithFrame:self.view.bounds];
28     lblMessage.numberOfLines = 0; //标签默认显示是单行的,设置numberOfLines=0就表示自适应多行
29     lblMessage.font = [UIFont fontWithName:@"Helvetica-Bold" size:17]; //默认是17点素
30     lblMessage.text = @"您好,我是模态画面;想关闭我,请按Goodbye按钮";
31     lblMessage.textAlignment = NSTextAlignmentCenter;
32     lblMessage.textColor = [UIColor orangeColor];
33     lblMessage.backgroundColor = [UIColor darkGrayColor];
34     [self.view addSubview:lblMessage];
35
36     UIButton *btnGoodbye = [UIButton buttonWithType:UIButtonTypeRoundedRect];
37     btnGoodbye.frame = CGRectMake(0, 0, 150, 40);
38     CGPoint newPoint = self.view.center;
39     newPoint.y += 80;
40     btnGoodbye.center = newPoint;
41     btnGoodbye.layer.masksToBounds = YES;
42     btnGoodbye.layer.cornerRadius = 10.0;
43     btnGoodbye.layer.borderColor = [UIColor whiteColor].CGColor;
44     btnGoodbye.layer.borderWidth = 2.0;
45     btnGoodbye.backgroundColor = [UIColor cyanColor];
46     [btnGoodbye setTitle:@"Goodbye" forState:UIControlStateNormal];
47     [btnGoodbye addTarget:self action:@selector(goodbyeDidPush) forControlEvents:UIControlEventTouchUpInside];
48     [self.view addSubview:btnGoodbye];
49 }
50
51 @end
时间: 06-13

030在布局中实现一个模态对话框的相关文章

3、栅格偏移 布局中的一个特产

理解了栅格化,那么栅格偏移也相对容易理解了.v3的偏移分别有以下几种: offset:左外边距(margin-left): pull:右位移(right): push:左位移(left). 其中offset使用的频率最高.不同的列宽度对应的外边距是不同的,所以每一种类型偏移都有四种,以offset为例(以下皆以offset为例): xs:col-xs-offset-0 ~ col-xs-offset-12 sm:col-sm-offset-0 ~ col-sm-offset-12 md:col-

【转】MFC模态对话框和非模态对话框

MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box). 一.模态对话框(model dialog box) 在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息,直到模态对话框退出才可以发送. 点击模态对话框中的OK按钮,模态对话框会被销毁. 创建一个模态对话框的代码: 1 //创建一个模态对话框 2 CTestDialog td; 3 td.DoModal(); 其中CTestDialog为我自

Qt的模态对话框和非模态对话框 经常使用setAttribute (Qt::WA_DeleteOnClose)

模态对话框就是指在子对话框弹出时,焦点被强行集中于该子对话框,子对话框不关闭,用户将无法操作其他的窗口.非模态相反,用户仍然可以操作其他的窗口,包括该子对话框的父对话框. 如果从线程角度来讲,模态对话框实际上是线程阻塞的,也就是子对话框是一个线程,但是在创建这个子线程之后,父窗口就阻塞了:模态对话框则不是阻塞型的线程模型,父子线程可以并行运行. 和所有流行的图形类库一样,Qt也提供了创建模态和非模态对话框的机制. 在Qt中创建模态对话框,主要用到了QDialog的exec函数: SonDialo

MFC模态与非模态对话框

1.简述 1.1模态对话框(model dialog box) 当模态对话框显示时,程序会暂停执行,直到关闭这个模态对话框之后,才能执行程序中的其他任务. 1.2非模态对话框(modeless dialog box) 当非模态对话框显示时,运行转而执行程序中的其他任务,而不用关闭这个对话框. 2.代码 2.1模态对话框的实现 void CModelCtrDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 TestDialog1 dlg; dlg

模态对话框 bootstrap-modal.js

调用方式 通过data属性 无需编写JavaScript代码即可生成一个对话框.在一个主控元素,例如按钮,上设置data-toggle="modal",然后再设置data-target="#foo" 或href="#foo" 用以指向某个将要被启动的对话框. <button type="button" data-toggle="modal" data-target="#myModal&quo

模态对话框与非模态对话框

①.区别 模态对话框:创建后,程序的其他窗口便不能进行操作,必须将该窗口关闭后,其他窗口才能进行操作.------父线程阻塞,子线程运行 非模态对话框:无需像模态对话框那样,它不强制要求用户立即反应,而是与其他窗口同时接受用户操作.-----父子线程同时运行 ②.添加资源与类绑定 资源窗口添加Dlg资源,Dlg窗口右键Add Class 绑定类.选择继承类 CDialog. ②.对话框创建与显示 模态对话框:CDialog::DoModal CMyDialog dlg;//继承CDialog类的

模态对话框测试

模态对话框只能屏蔽来自鼠标.键盘的消息,而不能屏蔽其他消息,也即模态对话框会独占用户输入.其实现原理如下: 让父窗口失效EnableWindow(pardent,FALSE); 建立模态对话框自己的消息循环 直至接收关闭消息,消息循环终止并销毁窗口 其中EnableWindow作用是: Enables or disables mouse and keyboard input to the specified window or control. When input is disabled, t

负边距在布局中的使用

负边距在布局中的使用 负边距即margin属性的值设为负值,在CSS布局中时一个很有用的技巧.值为正的场景很常见,大家都很熟悉其表现 当margin-top.margin-left为负值的时候,会把元素上移.左移,同时文档流中的位置也发生相应变化,这点与position:relative的元素设置top.left后元素还占据原来位置不同 当margin-bottom.margin-right设为负值的时候,元素本身没有位置变化,后面的元素会下移.右移 看几个应用场景 绝对定位元素 当元素被设置为

QT模态对话框用法(在UI文件中设置Widget背景图,这个图是一个带阴影边框的图片——酷)

QT弹出模态对话框做法: 1.新建UI文件时,一定要选择基类是QDialog的,我的选择是:Dialog without Buttons(),如下图: 2.然后在使用的时候: MyDialog dlg(this); dlg.exec(); 如果不加this,则会在任务管理器里面产生一个新的EXE. 3.如果对话框的标题是自定义,不想使用系统的标题,这时候需要在代码中加入: setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint ); setAttr