用户界面的设计
来源:互联网 发布:勒索软件即服务 编辑:程序博客网 时间:2024/06/06 00:21
#import <UIKit/UIKit.h>
@interface AppDelegate :UIResponder <UIApplicationDelegate>
@property (strong,nonatomic) UIWindow *window;
@end
#import "ViewController.h"
/*
一、storyboard操作方法:
1、Name Field(名称字段)要发送的事件: Did End On Exit:用户点击return或者done按钮。然后将它连接到 ViewController 上
2、Number Field(号码字段)要发送的事件:一个区域内的touch-down事件。然后将它连接到 ViewController 上
3、Horizontal Slider(水平滑动条)要发送的事件:Value Changed:一个点击拖拽或者操作一个区域,产生一系列的值。
4、Slider Label(滑动条的标签)要发送的事件:连接到 ViewVontroller上。
5、Switch,Button (分段控件 )要发送的事件:Value Changed:一个点击拖拽或者操作一个区域,产生一系列的值
6、Right Switch(右边开关按钮)要发送的事件:Value Changed:一个点击拖拽或者操作一个区域,产生一系列的值。然后将它连接到 ViewController上
7、Do Something Button (显示操作表单的按钮 )要发送的事件:Touch Up Inside:手指在区域内触发的touch-up事件。然后将它连接到 ViewController 上
8、Lefts Switch(左边开关按钮)要发送的事件:Value Changed:一个点击拖拽或者操作一个区域,产生一系列的值。然后将它连接到 ViewController上
二、下图是视图控制器中用到的约束:
Outlets里面显示的是你的属性, 以及连接着的目标.
Referencing Outlets是你被连接到了别人的属性上面.
比如UITableViewController的view属性连到UITableView上面, 在UITableViewController看来UITableView是它的Outlets, 反之则是Referencing Outlets.
同时UITableView的delegate属性又连到UITableViewController上面. 则此时在UITableView看来UITableViewController就成了它的Outlets了.
*/
@interface ViewController ()
//两个文本框的属性
@property (weak,nonatomic) IBOutletUITextField *nameField;
@property (weak,nonatomic) IBOutletUITextField *numberField;
//滑动条数值的属性
@property (weak,nonatomic) IBOutletUILabel *sliderLabel;
//左边开关的属性
@property (weak,nonatomic) IBOutletUISwitch *leftSWitch;
//右边的开关的属性
@property (weak,nonatomic) IBOutletUISwitch *rightSwitch;
//加载图片的按钮
@property (weak,nonatomic) IBOutletUIButton *doSomethingButton;
@end
@implementation ViewController
//按下 Done退出 ( Name和 Number两个触发事件都连接到这上面)
- (IBAction)textFieldDoneEditing:(id)sender {
[ sender resignFirstResponder];
}
//触摸背景退出
-(IBAction)backgroundTap:(id)sender {
[self.nameFieldresignFirstResponder];
[self.numberFieldresignFirstResponder];
}
//一个点击拖拽或者操作一个区域,产生一系列的值(滑动条的值)
- (IBAction)sliderChanged:(UISlider *)sender {
//lround 函数将返回最接近int到整数x。中间值将舍入远离零,浮点舍入模式的设置无关。无错误返回 (将舍入为最接近整数的浮点值)
int progress = (int)lroundf(sender.value);
//将滑动条文本的值设置为100
self.sliderLabel.text = [NSStringstringWithFormat:@"%d", progress];
}
//Right Switch 开关控件的实现
- (IBAction)swithChanged:(UISwitch *)sender {
//让两个开关同步( isOn是UISwitch类里面的一个属性,BOOL setting=sender.isOn;是将sender的isOn的值赋给setting)
BOOL setting = sender.isOn;
[self.leftSWitchsetOn:setting animated:YES];
[self.rightSwitchsetOn:setting animated:YES];
}
//分段控件的实现
- (IBAction)toggleControls:(UISegmentedControl *)sender {
// 0 == switches idex(开关的指标)
if (sender.selectedSegmentIndex ==0) //selectedSegmentIndex选取部分的指标
{
//如果是 Switch的话显示开关控件,隐藏图片按钮
self.leftSWitch.hidden =NO;
self.rightSwitch.hidden =NO;
self.doSomethingButton.hidden = YES;
}else{
//否则就显示图片按钮,隐藏开关按钮
self.leftSWitch.hidden =YES;
self.rightSwitch.hidden =YES;
self.doSomethingButton.hidden = NO;
}
}
//按下按钮触发一系列事情 (显示操作表单)
- (IBAction)buttonPressed:(UIButton *)sender {
//在 doSomething操作方法中分配了一个 UIAlertController对象并进行初始化。(这个初始化方法接受多个参数;第一个参数是要显示的标题,这里提供的标题将显示在操作表单的顶部。第二个参数是显示在标题下面的信息,字体小一些。我们不打算在这个示例中使用信息,因此我们在这个参数处填上 nil,最后一个参数表示我们希望让视图控制器显示一下警告视图还是控制视图想要显示警告视图的话UIAlertControllerStyleAlert或显示操作表单 UIAlertControllerStyleActionSheet)
UIAlertController * controller =
[UIAlertControlleralertControllerWithTitle:@"Are You Sure?"message:nilpreferredStyle:UIAlertControllerStyleActionSheet];
// 在用户按下 "Yes,I'm Sure!"按钮时,我们想弹出一个带文字的警告。当添加到警告控制器的按钮被按下时,操作表单(或警告视图)会关闭,而且会基于创建按钮的 UIAlertAction调用处理代码块。 (警告控制器默认不提供任何按钮,我们必须为每个添加到控制器中的按钮创建一个 UIAllerAction对象)
UIAlertAction * yesAction = [UIAlertActionactionWithTitle:@"Yes,I'm Sure!"style:UIAlertActionStyleDestructivehandler:^(UIAlertAction * action){
//创建一个新的字符串
NSString * msg;
//如果在姓名的文本框里面键入了姓名,就获取这个值,并且在警告视图的信息中使用它
if ([self.nameField.textlength] > 0){
msg = [NSStringstringWithFormat:@"You can breathe easy.%@, everything went Ok.",self.nameField.text];
}else//否则,只显示一条普通的信息
{
msg = @"You cam breathe easy, everything went Ok.";
}
//显示警告视图弹出窗口的标题
UIAlertController * controller2 = [UIAlertControlleralertControllerWithTitle:@"Something Was Done"message:msg preferredStyle:UIAlertControllerStyleAlert];
//取消警告视图窗口的显示
UIAlertAction * cancelAction = [UIAlertActionactionWithTitle:@"Phew!"style:UIAlertActionStyleCancelhandler:nil];
[controller2addAction:cancelAction];
//返回controller2
[selfpresentViewController:controller2animated:YEScompletion:nil];
}];
UIAlertAction * noAction = [UIAlertActionactionWithTitle:@"No way!"style:UIAlertActionStyleCancelhandler:nil];
//向控制器添加两个按钮
[controlleraddAction:yesAction];
[controlleraddAction:noAction];
//展示操作表单。 (为了让警告视图或操作表单显示出来,需要让当前视图控制器来展示警告视图控制器)
UIPopoverPresentationController * ppc = controller.popoverPresentationController;
if (ppc != nil) {
//通过获取到警告控制器的悬浮展示控制器,并设置它的 sourceView和 sourceRect属性来设定操作表单会出现的位置。 ( sourceView属性指向那个按钮和 sourceRect属性为按钮的外型)
ppc.sourceView = sender;
ppc.sourceRect = sender.bounds;
}
//将警告控制器作为展示的控制器以显示操作表单。 (在展示视图控制器时,被展示的视图会暂时取代展示它的视图控制器的视图。)
[selfpresentViewController:controlleranimated:YEScompletion:nil];
//对于警告控制器,操作表单或警告视图会部分覆盖展示它们的视图控制器的视图,而视图的剩余部分会被阴影覆盖,半透明的背景可以让你看到底层视图,并提醒你无法与之交互,除非你关闭了展示的视图控制器
}
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
- 设计优秀的用户界面
- 设计优秀的用户界面
- 用户界面设计的原则
- 设计Android的用户界面
- 优秀的用户界面设计
- 优秀的用户界面设计
- 用户界面的设计
- 设计用户界面的几个重点
- UI(用户界面)的人性设计
- 当前DOS用户界面的设计
- 良好的用户界面设计技巧
- 设计Android的用户界面(一)
- Android的用户界面设计《一》
- 移动 Web 的用户界面设计
- 优秀的用户界面设计法则
- 优秀的用户界面设计技巧
- 《 用户界面设计 》
- 用户界面设计
- 2个有序数组求合并后的中位数
- 欢迎使用CSDN-markdown编辑器
- cookie
- hi35xx stmmac网卡驱动源码解读
- 观察者模式:当一个对象状态发生改变时,通知依赖他的全部对象都发生改变
- 用户界面的设计
- struts2.3升级到struts2.5
- POJ1505 Copying Books(dp)
- select(好区间)
- 原生JS将列表子元素顺序反转
- python基础二_List&tuple
- JDK各版本下载
- 数据对象映射模式
- Linux终端下 Ctrl+S卡死 无法输入问题