(一)UI设计的一些常识
@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
三.常见的控件属性
CGRect tempFrame = self.head.frame;
tempFrame.;
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., , , );
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常见的属性改变(如背景变色)都可以使用系统的动画,复杂动画需要自己实现。
补充一些控件和属性
self.head.transform = CGAffineTransformMakeTranslation(deltaX,
deltaY);
注意的是形变属性只允许有一种状态。这是在原来的基础上的改变,多次实施依然deltaX=-100。
解决方法是将deltaX叠加。
最有解决方案:在一个transform基础上生成新的。
,
-);
旋转:注意是弧度制的旋转。
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,会死循环。
(一)UI设计的一些常识的更多相关文章
- 2018年这些UI设计趋势正在流行,跟上必拿高薪!
数字设计领域和时尚圈是一样的,总会有各种各样的趋势让人眼花缭乱.无论是用户界面的视觉元素,还是用户体验的细节,总有许多值得说道的新玩法和新方向.就目前来看,UI设计的大趋势是更加大胆新颖的视觉设计,通 ...
- 不得不存!UI设计新手不可错过的7条实用法则
http://www.gameres.com/316761.html 本文编译自 Medium,作者是一位UX(User Experience, 用户体验)设计师,他通过自己学习UI设计的过程,总结出 ...
- 开发辅助 | 前端开发工程师对 UI设计、交互设计的认知
1.UI 用户界面 UI:User Interfase 用户界面 UID:User Interfase Designer 用户界面设计师,多指移动 app 的界面设计: 2.一个合格的 UI 设计师, ...
- 缩放因子和UI设计
一.PPI 1.像素密度PPI:PPI(Pixel Per Inch by diagonal):表示沿着对角线,每英寸所拥有的像素(Pixel)数目. 根据勾股定理(直角三角形两边为a和b,斜边为c, ...
- Android 腾讯入门教程( 智能手表UI设计 和 MVC模式 )
*****注意到mvc 在android 中是如何进行分层分域执行各自的功能.**** 官方推荐的按钮尺寸是48像素 前端之Android入门(1):环境配置 前端之Android入门(2):程序目录 ...
- eclipse里打开SWT项目找不到source/design的图形UI设计界面
因为前天重新装了个新版的eclipse, 结果今天打开一个SWT的项目,突然找不到source/design的图形UI设计的两个切换按钮 我把SWT组件重新装了还是找不到.结果后来发现是因为重装ecl ...
- 分享20个最新的免费 UI 设计素材给设计师
用户界面设计涉及到很多的创意,灵感以及需要与客户进行有效沟通的技能.良好的用户界面是一致的,可以使网站更容易理解和使用.UI设计的重点在于用户体验和互动,同时易于使用对于一个成功的移动应用程序来说非常 ...
- UI设计中的48dp定律【转】
有朋友建议我偶尔写写技术类的文章,所以我打算开始穿插性的写一些偏技术方面的科普文章,尽量往小白能看懂的方向写,今天我来讲讲UI设计中的48dp定律. 那么先说说什么是dp ?其实对于一个非技术人员要把 ...
- 2017年8个UI设计流行趋势
设计趋势变化的理由需要考虑各种各样的因素.让我们来一起看看2017年的设计流行趋势吧. 应用界面的设计趋势是不断变化的.随着时间的推移他也在不断的成长,进化.虽然有些趋势还有待检验,但我们还是需要不断 ...
随机推荐
- PHP 5 Calendar 函数
PHP Calendar 简介 日历扩展包含了简化不同日历格式间的转换的函数. 它是基于 Julian Day Count(儒略日计数),是从公元前 4713 年 1 月 1 日开始计算的. 注释:如 ...
- iOS开源加密相册Agony的实现(三)
简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...
- FindBugs入门简介(eclipse安装使用实例)
前言:一般公司都会有一些开发规范,但是事实上,简单看那么一两遍并不能养成习惯,或者将这些规范记住.特别的,对于一些新手,写的代码往往会很糟糕.回头看看你一两年前写的代码就会知道,所谓的"糟糕 ...
- proc文件系统探索 之 以数字命名的目录
在proc根目录下,以数字命名的目录表示当前一个运行的进程,目录名即为进程的pid.其内的目录和文件给出了一些关于该进程的信息. niutao@niutao-desktop:/proc/6584$ l ...
- Xcode 调试技巧 --常用命令和断点
Xcode 中的调试技巧与我们的日常开发息息相关,而这些调试技巧在我们解决Bug时,常常有事半功倍的作用,经常会用到的有各种断点 和 命令.而这些调试技巧也经常会在面试中问到,所以不知道的就来看看吧. ...
- [error]configure: error: You need a C++ compiler for C++ support.
安装pcre包的时候提示缺少c++编译器 解决办法 使用yum安装 yum -y install gcc-c++ 本文出自 "orangleliu笔记本"博客,转载请务必保留此出处 ...
- 1CCTableView的使用,TableView响应和小格子tableView实现
1 CCTableView的使用 T26TableView.h #ifndef __T26TableView_H__ #define __T26TableView_H__ #includ ...
- UNIX网络编程——原始套接字的魔力【上】
基于原始套接字编程 在开发面向连接的TCP和面向无连接的UDP程序时,我们所关心的核心问题在于数据收发层面,数据的传输特性由TCP或UDP来保证: 也就是说,对于TCP或UDP的程序开发,焦点在Dat ...
- Windows远程连接的实现
实验室有一台电脑,寝室里也有一台电脑,很多时候,事情还没有做完就不得不离开实验室,所以,在寝室里远程控制实验室的电脑是一件很有"意义"的事,其实,Windows系统已经 ...
- 关于新版本,iOS10的相关内容,兼容iOS 10 资料整理笔记
1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大改重构,这让开发者也体会到UserN ...