一、概述
新版本的Xcode似乎框架不明示。
UIView:屏幕上看得见摸得着的东西。视图、控件、组件。
UIView是一个容器,能容纳其他UIView。
UIViewController用来控制UIView。
按钮事件的绑定:
手写代码的方法:
1.右键单击按钮,选择touch up Inside。
2.要绑定的方法返回值设置为IBAction。
3.二者进行连线。
注意:UI控件用nonatomic、weak。
控件要加上IBOutlet(property后)才能连线。
总结:
@IBAction:保证控件能连线,实际等于void。
@IBOutlet:保证属性可以连线。
连线方法:默认就是Touch up inside方式,因此可以直接右键拖。
按住CTRL或者按住右键拖动过去也可以。
直接从storyboard连线:
右键点击相应的View,然后直接连线到弹出框。
更改storyboard的方法:修改General中的Main Interface
解决模拟器键盘不弹出的问题:
Command+Shift+H是模拟器的Home键
二.一些常识

Bundle Identifier:app的唯一标识。相同覆盖。
规定Bundle Identifier与公司有关,将公司域名反写,再加上app名称。
注意:中文名称会变为中划线(-)。
响应者:
第一响应者:叫出键盘的控件。
resign表示辞职
resignFirstResponder 不再作为第一响应者,则键盘退出。
多个控件分别调用这个方法比较麻烦。
更简单的方式:前提是键盘是view内的控件调出的(view内存在第一响应者)。
[self.view endEditing:YES];
常见错误:
[setValue:forUnderfinedKey] ...是连线错误(可能有绑定的@property被注释了,也可能有已经连线的控件,但是生成的代码被删除了)。
Xcode建议把属性都放到.m文件中。可以注意到一个细节,在.m的@implementation上面有一个@interface(类扩展,私有扩展)。

@interface ViewController ()

@end

注意小括号内不能放任何内容,在其内部写声明,可以封装起来内容不要给外界使用。

可以保证封装性。

@interface ViewController ()

- (IBAction)compute;

@property (nonatomic,weak) IBOutlet UITextField *num1;

@property (nonatomic,weak) IBOutlet UITextField *num2;

@property (nonatomic,weak) IBOutlet UILabel *result;

@end

三.常见的控件属性

IOS坐标系,左上角是坐标原点,横x竖y。
CGRect frame 控件的矩形框在父控件中的位置和尺寸。
CGRect有origin和size两个属性。
左侧的列表可以反映加入顺序,后面的可以覆盖前面的。
CGRect bounds以自己左上角为原点,一般尺寸和frame相同,x、y一般为0。
CGPoint center以父控件左上角为坐标原点,控件中点的位置。
四.按钮的使用

按钮支持背景图片与内容图片。
1.按钮的状态:
normal        默认状态
highlighted 按下去并且手指还未松开
disabled     不可用状态
按钮的状态对应的文字与内容
首先设置Type为Custom,然后分别对不同的State Config来设定下面的内容。
2.设定frame
!OC不允许直接修改对象结构体属性的成员(例如frame.origin.y不能直接修改)。
但是允许直接修改对象的结构体属性。
一般的做法是先把结构体保存成temp,修改后再赋回去。
三部曲:取出、修改,送回。

CGRect tempFrame = self.head.frame;

tempFrame.origin.y -= 10;

self.head.frame = tempFrame;

通过frame既可以改位置,又可以改大小。

3.查错:

先在相应的方法里加断点,看有没有进入。

其次可以用NSLog。

打印结构体:NSStringFromCGRect();

发现不能改变图片大小:AutoLayout影响的。

代码的优化:例如上下左右四个按钮用一个方法实现。

多个按钮可以拖到同一个IBAction上面。

!当按钮对应的方法有参数时,会把被点击的按钮当做参数传入,例如是按钮,要传入UIButton *

注意修改IBAction后要重新连线。

标识不同的sender,绑定不同的tag。

输入一个数值Tag。

修改控件位置:修改frame与center。

3.设定center

center是CGPoint,可以修改位置。

4.设定bounds

bounds以自己的左上角为坐标原点,但是可以改尺寸。

bounds修改尺寸中心不动,但是frame改尺寸左上角不动。

总结:

frame:修改位置和尺寸(左上角不动)

center:修改位置

bounds:修改尺寸(中心不动)

5.通过代码创建按钮

viewDidLoad方法,在控制器和View被创建完毕后会调用。

创建->加入->改参数

UIButton *btn = [[UIButton alloc] init];

[self.view addSubview:btn];

btn.frame = CGRectMake(100, 100, 100, 100);

UIImage *imgNormal = [UIImage imageNamed:@"btn_01"];

UIImage *imgHighlighted = [UIImage imageNamed:@"btn_02"];

[btn setBackgroundImage:imgNormal forState:UIControlStateNormal];

[btn setBackgroundImage:imgHighlighted forState:UIControlStateHighlighted];

[btn setTitle:@"点我啊" forState:UIControlStateNormal];

[btn setTitle:@"点我干啥" forState:UIControlStateHighlighted];

[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

[btn setTitleColor:[UIColor blueColor] forState:UIControlStateHighlighted];

创建自定义代码的另一种方法:在storyboard中设置后会转为相应的代码。

使用的是buttonWithType类方法创建。

storyboard能办到的东西,代码都能办到。

修改系统默认的按钮类型:

使用代码设置按钮类型:

UIButton *btnInfo = [UIButton buttonWithType:UIButtonTypeRoundedRect];

系统自带的不必设置尺寸。用center来改位置。

通过代码来监听按钮事件:

Target代表的是当前View,这里的self就是当前View。

注意action要包装在@section内。

[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];

- (void)btnClick:(UIButton *)button{

NSLog(@"clich the button %@",button);

}

五.头尾动画

需求:控件移动时加上缓慢的动画效果。
只需要告诉系统哪个参数需要慢慢的变。
头尾法(标识出动画应用的范围):

[UIView beginAnimations:nil context:nil];

[UIView setAnimationDuration:0.5]; //默认是0.25秒一帧。

[UIView commitAnimations];

bounds为了保证center不变,有一个挪动。

IOS常见的属性改变(如背景变色)都可以使用系统的动画,复杂动画需要自己实现。

补充一些控件和属性

文本框的placeholder(占位文字)类似Android的hint(提示),可以在无输入时进行提示。
密码框:勾选Secure Text Entry 
文本框右侧的清空按钮:属性面板更改Clear Button的选项为Appears while ......
右键拖入也可以连线。并且与手写是一样的效果,注意左边的圈可以观察是否连线正常。
Action可以有sender和event两个参数,event参数包含了点击时刻和位置等信息。
Transform的使用:动画常用
能改位置、尺寸、旋转角度
使用Transform实现平移:

self.head.transform = CGAffineTransformMakeTranslation(deltaX, deltaY);

注意的是形变属性只允许有一种状态。这是在原来的基础上的改变,多次实施依然deltaX=-100。

解决方法是将deltaX叠加。

最有解决方案:在一个transform基础上生成新的。

self.head.transform = CGAffineTransformTranslate(self.head.transform, 0, -50);

旋转:注意是弧度制的旋转。

self.head.transform = CGAffineTransformRotate(self.head.transform, M_PI_4);

缩放:填写的是x方向与y方向的缩放比例。

self.head.transform = CGAffineTransformScale(self.head.transform, 1.2, 1.2);

特殊场合用transform,平时可用center、frame、bounds。

UIImage的使用

self.xxximgView.image = [UIImage imageNamed:@“…”];

禁用控件:

btn.enabled = NO;

Disable默认是变灰,也可以修改图片。

试着去精简自己的代码。

除去对象以外的内容用strong。

数据的处理方式:

先把一个数据组写成字典(NSMutabeDictionary可以用[ ]索引来创建键值对)。

然后把字典放入数组。

使用的时候先取出字典,然后使用。

对于key,为了防止前后不一致,可以用#define写宏

有的公司以k开头有的公司以公司前缀开头。

get方法里面千万不要用self,会产生死循环。

延迟加载(懒加载):保证性能,将属性放到get方法中初始化。

用到的功能在使用时加载,例如有些数据只有查看时才将相应的数据初始化。

可以通过重写相应的get方法,注意在get方法用 _xxx == nil来判断是否加载过,千万不要用self,会死循环。

转载于:https://www.cnblogs.com/aiwz/p/6154252.html

(一)UI设计的一些常识相关推荐

  1. 2018年这些UI设计趋势正在流行,跟上必拿高薪!

    数字设计领域和时尚圈是一样的,总会有各种各样的趋势让人眼花缭乱.无论是用户界面的视觉元素,还是用户体验的细节,总有许多值得说道的新玩法和新方向.就目前来看,UI设计的大趋势是更加大胆新颖的视觉设计,通 ...

  2. 不得不存!UI设计新手不可错过的7条实用法则

    本文编译自 Medium,作者是一位UX(User Experience, 用户体验)设计师,他通过自己学习UI设计的过程,总结出7条实用的法则,为UI设计新手提供了宝贵的经验. 序言首先,明确一点, ...

  3. 中剪取一种颜色的板块_不知道UI设计中APP界面版式如何排版?来看这个!

    UI设计中APP的界面看似只有几个简单的元素组合起来, 所有元素的绘制可以说比较简单: 然而,当一个产品原型出来后,设计师如果单纯按原型来进行设计而不考虑信息化规则, 那么很多时候就会出现不协调的效果 ...

  4. 【可临摹UI设计干货】APP UI界面的版式设计理论!

    APP UI 的界面看似只有几个简单的元素组合起来,所有元素的绘制可以说比较简单,然而当一个产品原型出来后,设计师如果单纯按原型来进行设计而不考虑信息化规则,那么很多时候就会出现不协调的效果.其实UI ...

  5. UI设计优秀可临摹素材|网页设计头部技巧

    头部内容设计的一些技巧. 1. 关于尺寸 对于网页头部图片的大小是没有统一的答案.有时候设计师希望提供相对固定的数字,但网页设计最大的难点之一是很难确保每个屏幕尺寸的有效性.即使两个屏幕的尺寸相同,分 ...

  6. UI设计书籍推荐,这三本好书你不能错过

    UI设计近几年发展时态一片良好,UI设计师也顺势成了热门行业,但是行业专业技能人才还是很稀缺的,对这一行有想法的朋友也要动起来了,我们需要必要的充电.这里小编整理了一些UI设计书籍,希望能帮到大家.U ...

  7. 移动UI设计学习总结

    以下是我阅读书本得到的一些知识方面的总结: UI设计常识* 1.手机界面的构成被分为几个标准的信息区域:状态栏**,标题区,功能操作区,导航栏.** 2.APP运行在手机操作系统的软件环境中,其UI设 ...

  8. 学习UI设计都需要会什么

    随着社会的不断发展,越来越多的人都注重外在表现,视觉上的影响力越来越大,UI设计行业在近几年广受企业的追捧,很多人都想要学习UI设计,那么学习UI设计都需要会什么呢?来看看下面的详细介绍. 学习UI设 ...

  9. 开发辅助 | 前端开发工程师对 UI设计、交互设计的认知

    1.UI 用户界面 UI:User Interfase 用户界面 UID:User Interfase Designer 用户界面设计师,多指移动 app 的界面设计: 2.一个合格的 UI 设计师, ...

  10. UI设计中的作品集避坑指南

    在作品集和简历的制作过程中,有很多注意事项值得关注,而这些能够让你的作品集和简历,更上一层楼.今天我总结出来的是设计师简历和作品集中常见的 10 个死穴.在此之前,我因为这些问题而拒绝过很多设计师的申 ...

最新文章

  1. SpringJpa多对多映射关系
  2. Java常量字符串String理解
  3. 判断字符串数组中是否所有字符只出现了一次
  4. python leetcode_Leetcode 常用算法 Python 模板
  5. 安卓学习日记:初识Android Studio · java环境配置和AS安装
  6. tensorflow是python自带的吗_python-Tensorflow-没有名为’_pywrap_tensorflow_int...
  7. HTML5 canvas游戏工作原理
  8. UIImagePickerController选择图片发送后旋转90度的问题
  9. [小型企业]不同vlan配置DHCP服务
  10. 云服务器里可以放多少网站,一台云服务器上可以放多少个网站
  11. 进程被kill原因_Linux内核系列 简析进程生命周期:从生到死的这一生(一)
  12. golang:cannot unmarshal number into Go value of type []json.RawMessage
  13. 14_python_练习题——excel操作
  14. 工程物资云平台_SaaS产品设计说明书(PRD)_施工企业工程项目物资材料管理软件系统
  15. 网口压线顺序_网线怎么接头 网线水晶头的接法和排序
  16. 申城「三日谈」:言汇百家,思通以达(SDCC 2017上海站PPT集锦)
  17. 计算机教师的应用计划书,教师信息技术个人提升计划
  18. 组装电脑千万不要随便买
  19. 使用函数打印n*n的乘法口诀表
  20. AsyncTask下载网络文件,并显示下载进度

热门文章

  1. Ubuntu 安装DELL D630无线网卡驱动
  2. [转]android刷新后R.java不见了
  3. 垂直搜索引擎模块设计
  4. [转]架构师的职责及工作描述
  5. android小项目数字拼图游戏_Java小项目之:拼图游戏
  6. mysql 搜索_MySQL模糊搜索的几种姿势
  7. linux 自动化安装系统,Linux-运维之半自动化安装系统
  8. python_入门初级
  9. git rebase和 merge的区别
  10. 生成springboot banner网站