UI基础知识

1、延迟操作:

[self performSelector:@selector(nextQuestion) withObject:nil afterDelay:0.5];

2、创建控制器系统会先调initWithNibName方法

3、storyboard创建控制器

UIViewController *vc = [storyboard instantiateInitialViewController];

MJTwoViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@“pink"];

4、视图生命周期的一些方法:

didMoveToSuperview

didAddSubview

layoutSubviews

5、  // 1.开始动画

[UIView beginAnimations:nil context:nil];

// 动画持续2秒

[UIView setAnimationDuration:2.0];

[UIView commitAnimations];

// 2.动画

[UIView animateWithDuration:0.5 animations:^{

label.alpha = 0.5;

} completion:^(BOOL finished) {

[UIView animateWithDuration:0.5 delay:0.5 options:UIViewAnimationOptionCurveLinear animations:^{

label.alpha = 0.0;

} completion:^(BOOL finished) {

[label removeFromSuperview];

}];

}];

6、创建cell

如果cell是通过storyboard或者xib创建的,就不可能会调用initWithStyle,而是调用awakeFromNib

这个方法来初始化cell

如果cell是通过手写代码创建,才会调用initWithStyle

这个方法来初始化cell

7、// 跳转 -- 执行login2contacts这个segue

[self performSegueWithIdentifier:@“login2contacts” sender:nil];

//跳转之前会调用

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

8、ActionSheet:

UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"确定要注销?" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"确定" otherButtonTitles:nil, nil];

[sheet showInView:self.view];

9、通知

// 监听通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.nameField];

//移除通知

[[NSNotificationCenter defaultCenter] removeObserver:self];

10、文档路径

// 1.获得沙盒根路径

NSString *home = NSHomeDirectory();

// 2.document路径

NSString *docPath = [home stringByAppendingPathComponent:@“Documents"];

11、偏好设置

1 -> 保存数据

// 1.获得沙盒根路径

NSString *home = NSHomeDirectory();

// 2.document路径

NSString *docPath = [home stringByAppendingPathComponent:@“Documents”];

// 3.立刻同步

[defaults synchronize];

2 ->读取数据

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSString *account = [defaults objectForKey:@"account"];

BOOL autoLogin = [defaults boolForKey:@“auto_login"];

12、对象归档

1 ->controller:

// 1.归档模型对象

// 1.1.获得Documents的全路径

NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

// 1.2.获得文件的全路径

NSString *path = [doc stringByAppendingPathComponent:@"stu.data"];

// 1.3.将对象归档

[NSKeyedArchiver archiveRootObject:stu toFile:path];

// 2.读取归档模型对象

// 1.1获得Documents的全路径

NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

// 1.2获得文件的全路径

NSString *path = [doc stringByAppendingPathComponent:@"stu.data"];

// 1.3从文件中读取MJStudent对象

Student *stu = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

2 ->student类:遵守<NSCoding>协议

实现两个协议方法:/**

*  将某个对象写入文件时会调用

*  在这个方法中说清楚哪些属性需要存储

*/

- (void)encodeWithCoder:(NSCoder *)encoder

{

[encoder encodeObject:self.no forKey:@"no"];

[encoder encodeInt:self.age forKey:@"age"];

[encoder encodeDouble:self.height forKey:@"height"];

}

/**

*  从文件中解析对象时会调用

*  在这个方法中说清楚哪些属性需要存储

*/

- (id)initWithCoder:(NSCoder *)decoder

{

if (self = [super init]) {

// 读取文件的内容

self.no = [decoder decodeObjectForKey:@"no"];

self.age = [decoder decodeIntForKey:@"age"];

self.height = [decoder decodeDoubleForKey:@"height"];

}

return self;

}

13、读取xib

// 读取xib文件(会创建xib中的描述的所有对象,并且按顺序放到数组中返回)

NSArray *objs = [bundle loadNibNamed:@“MJAppView" owner:nil options:nil];

14、label.layer.cornerRadius = 5;

label.clipsToBounds = YES;

表格不允许选中

self.tableView.allowsSelection = NO;

表格自动滚动表格到最后一行

NSIndexPath *lastPath = [NSIndexPath indexPathForRow:self.messageFrames.count - 1 inSection:0];

[self.tableView scrollToRowAtIndexPath:lastPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];

15、键盘处理

/*

UIKeyboardAnimationCurveUserInfoKey = 7;  // 动画的执行节奏(速度)

UIKeyboardAnimationDurationUserInfoKey = "0.25"; // 键盘弹出\隐藏动画所需要的时间

UIKeyboardBoundsUserInfoKey = "NSRect: {{0, 0}, {320, 216}}";

UIKeyboardCenterBeginUserInfoKey = "NSPoint: {160, 588}";

UIKeyboardCenterEndUserInfoKey = "NSPoint: {160, 372}";

UIKeyboardFrameChangedByUserInteraction = 0;

// 键盘弹出

UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 480}, {320, 216}}";// 键盘刚出来那一刻的frame

UIKeyboardFrameEndUserInfoKey = "NSRect: {{0, 264}, {320, 216}}"; //  键盘显示完毕后的frame

// 键盘隐藏

UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 264}, {320, 216}}";

UIKeyboardFrameEndUserInfoKey = "NSRect: {{0, 480}, {320, 216}}";

*/

16、旋转事件 —> UIApplication —> UIWindow

17、scrollView相关属性

1、滚动范围:self.scrollView.contentSize = CGSizeMake(0, contentH);

2、// 增加额外的滚动区域(在顶部增加64的区域,在底部增加44的区域)

self.scrollView.contentInset = UIEdgeInsetsMake(64, 0, 44, 0);

3、// 设置一开始的滚动位置(往下滚动64)

self.scrollView.contentOffset = CGPointMake(0, -64);

4、// 设置最大和最小的缩放比例

self.scrollView.maximumZoomScale = 2.0;

self.scrollView.minimumZoomScale = 0.2;

18、alertView    // 弹框

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"数据展示" message:nil delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];

// 设置对话框的类型

alert.alertViewStyle = UIAlertViewStylePlainTextInput;

// 取得唯一的那个文本框,显示英雄的名称

[alert textFieldAtIndex:0].text = hero.name;

[alert show];

19// 表格的局部刷新

NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:0];

[self.tableView reloadRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationBottom];

20、跳转控制器的三种方法:

1->push

2->modal

3->改变窗口的根视图控制器

[UIApplication sharedApplication].keyWindow.rootViewController = mainVc;

时间: 2024-08-24 18:53:04

UI基础知识的相关文章

【安卓学习笔记2】UI基础知识&amp;View&amp;&amp;ViewGroup

万丈高楼平地起,安卓开发的最直观个人也认为任务最多的部分就是UI的开发了. 那么用户在前台看到的东西是什么呢? 没错,是Activity! 而Activity只是一个窗体而已,真正显示给用户看的是View. 如果熟悉Web开发的人员就明白MVC的概念.这个View就是V层,显示给用户看的东西 同时用于交互产生Model数据,以便交给Controller处理. Android中View是所有UI组件的基类,其下有ViewGroup子类,一般作为各View组件的容器使用 常见如我们熟悉的各种Layo

Android UI 基础知识

[相关概念] View 视图 ViewGroup   视图容器 Layout  布局 Activity 活动 Fragment 片段 Widget  部件 Dialog   对话框 Material Design  材料设计/原质化设计 Material Design 中文版 参考资料:http://hukai.me/android-training-course-in-chinese/basics/firstapp/building-ui.html Android 的图形用户界面由多个视图(V

基础知识漫谈(2):从设计UI框架开始

说UI能延展出一丢丢的东西来,光java就有swing,swt/jface乃至javafx等等UI toolkit,在桌面上它们甚至都不是主流,在web端又有canvas.svg等等. 基于这些UI工具包\框架,又产生了大量通用的或者业务性的UI框架,比如Draw2d.GEF.easyUI乃至国内的EChart.白鹭等等. 这些框架的业务范围各异,一个程序员的时间和精力有限,你不可能全部都掌握,又不能预言出是哪一个将来会独步天下,甚至,连当前哪一个最流行,都够打一阵嘴炮. 那,我们应该学什么?

UI设计初学者教程:色彩基础知识

编辑:千锋UI设计 初学设计都会先认识三原色,通常我们说的三原色指的是颜料三原色:红.黄.蓝:其实三原色还有色光三原色:红.绿.蓝.我们通常说的红黄蓝就是减色法三原色,而红绿蓝是加色法三原色.可能这么说有点蒙,简单来说就是CMYK(印刷色)和RGB(屏幕色)的区别. 初学设计都会先认识三原色,通常我们说的三原色指的是颜料三原色:红.黄.蓝:其实三原色还有色光三原色:红.绿.蓝.我们通常说的红黄蓝就是减色法三原色,而红绿蓝是加色法三原色.可能这么说有点蒙,简单来说就是CMYK(印刷色)和RGB(屏

Android应用基础知识

Android 应用采用 Java 编程语言编写.Android SDK 工具将您的代码-连同任何数据和资源文件-编译到一APK: Android 软件包,即带有 .apk 后缀的存档文件中.一个 APK 文件包含 Android 应用的所有内容,它是基于 Android 系统的设备用来安装应用的文件. 安装到设备后,每个 Android 应用都运行在自己的安全沙箱内: 1.Android 操作系统是一种多用户 Linux 系统,其中的每个应用都是一位不同的用户: 2.默认情况下,系统会为每个应

WSFC基础知识奠基

前面主要和大家介绍了一下群集的种类,以及一些群集通用的基本知识,本章开始我们将专注于微软故障转移群集的深入研究与理论解析 微软故障转移群集即是我们上篇文章介绍的,一个典型的高可用性群集解决方案,它内置在Windows Server的角色与功能里面,不需要安装额外工具,故障转移群集通常情况下都是主从工作的模式,即一个群集应用同时只有一个节点对外提供服务,然后故障转移群集利用心跳检测机制检测节点存活状态,一旦检测到节点宕机,会通过查询群集数据库,来讲宕机节点承载的群集应用进行上线 同时故障转移群集也

selenium自动化基础知识

什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要通过修改部分代码的方式来覆盖这部分修改的内容,大大提高测试效率.但是后期代码维护需要一定的成本,如果系统属于表单比较多或者经常修改改动的系统不太适合使用自动化,因为这个维护成本太高:针对于一些相对比较成熟(改动不是很频繁)的系统和跑回归测试的系统很适合进行自动化测试. 性能自动化即使用性能测试工具(

转载 前端基础知识体系 一个新手的学习之路

原帖地址:  转载的原因是我学习前端和php已经4个多月了.看看自己还有那些不足.自己得努力学习,牛人太多.红色是我会的,或者学过的.希望今天把大部分飘红. 一.HTML 标签的分类 标签表示一个元素 按性质划分: Block-Level和Inline-Level 按语义划分: Headings: h1, h2, h3, h4, h5, h6 Paragraphs: p Text Formatting: em, strong, sub, del, ins, small Lists: ul, li

Android基础知识(一)

前言 前言 从软件测试最终目的发现问题缺陷来看,Findyou比较认同一个观念,测试的能力大致可以划分成三个能力层次:发现问题.定位问题.预防问题.有机会探讨一下这个分类. 发现问题各种方式方法,比如边界值,如何有效提高发现问题的效率?比如APP前后台切换数据为什么容易丢失?什么情况下容易产生OOM? 定位问题要求测试综合能力强,你比如业务熟悉.代码熟悉.平台(比如Linux系统.Android系统)熟悉等均有很强的要求.比如上文的栗子,APP前后台切换界面录入数据丢失,能否通过日志.代码.系统