iOS是Apple公司的移动操作系统,主要⽤用于iPhone、iPad、iPad Mini、iPod Touch等移动产品。
UI(User Interface):⽤用户界⾯面,⽤用户能看到的各种各样的⻚页⾯面元素。
iOS App =各种各样的UI控件+业务逻辑和算法。
想要开发出⼀一款精美的应⽤用程序,需要熟练掌握各种UI控件的⽤用法。
iOS发展到现在,从最初的iOS 2.0到iOS 7.0,经历了⼀一些变化。
在UI外观上,iOS 7发⽣生了重⼤大变⾰革。以线条为主,倾向于扁平化,更着重于体现应⽤用程序的内容。
iOS 7之前的UI外观则以虚拟化为主,注重⽴立体、阴影的配搭。⽆无形中降低了应⽤用程序内容的地位。
一、UIWindow
在iOS中,使⽤用UIWindow类来表⽰示窗⼝口,通常⼀一个应⽤用程序只创建⼀一个UIWindow对象。
window的主要作⽤用是呈现内容给⽤用户,我们不会对window做太多操作。
通常window的⼤大⼩小(frame)与屏幕(UIScreen)⼤大⼩小⼀一致。⽰示例代码如下:
self.window= [[UIWindowalloc]initWithFrame:
[[UIScreen mainScreen] bounds]];
二、UIView
什么是View?view(视图):代表屏幕上的⼀一个矩形区域。iOS中⽤用UIView来表⽰示
视图前⾯面ppt⾥里看到的各种UI控件都属于view。
不同的控件代表不同种类的view。iOS中所有能看到的内容都是view或其⼦子类。
创建视图的步骤如下:
1、开辟空间并初始化视图(初始化时,给出视图位置和⼤大⼩小)
2、对视图做⼀一些设置(⽐比如:背景颜⾊色)
3、将视图添加到window上进⾏行显⽰示
4、释放视图对象
视图创建代码
视图创建
UIView *blueView = [[UIView alloc]
initWithFrame:CGRectMake(100, 100, 120, 100)];
blueView.backgroundColor = [UIColor blueColor];
[self.window addSubview:blueView];
[blueView release];
iOS坐标系
iOS提供了⽤用于布局的平⾯面坐标系。左上⾓角为坐标系的原点。
⽔水平向右:为x的正⽅方向。屏幕最左到最右可划分320等份。
垂直向下:为y的正⽅方向。屏幕最上到最下可划分480等份(3.5⼨寸屏幕)。
坐标系不是以像素作为划分依据,⽽而是以“点”作为依据。
frame
frame是⼀一个结构体,包含2部分内容:origin和size。
origin也是⼀一个结构体,包含2部分内容:x和y。
size同样是⼀一个结构体,包含2部分内容:width和height。
frame的origin和size是相对于⽗父视图来说的。
CGRectMake()函数可以帮我们快速构造⼀一个CGRect变量。
center(中⼼心点)也是view重要的属性。
center是个结构体,包含2个部分:x和y。
center与frame有着密切的联系。
center.x = frame.origin.x + frame.size.width/2;
center.y = frame.origin.y + frame.size.height/2;
bounds
bounds(边界)也是view的重要属性,⽤用于定义⾃自⼰己的边界。
它同frame⼀一样是⼀一个CGRect结构体变量。
当⼀一个view设置bounds时,会把⾃自⼰己当成⼀一个容器,定义⾃自⼰己的边界⼤大⼩小 以及 左上⾓角的初始坐标。
当⼦子视图添加到此视图时,会根据bounds指定的原点(0,0)计算frame,⽽而⾮非左上⾓角。
UILabel
UILabel扩展了⽂文字显⽰示的功能,UILabel是能显⽰示⽂文字的视图。
项目中哪些地⽅方会⽤用UILabel?
UILabel是UIView⼦子类,作为⼦子类⼀一般是为了扩充⽗父类的功能,
UILabel扩展了⽂文字显⽰示的功能,UILabel是能显⽰示⽂文字的视图。
项目中哪些地⽅方会⽤用UILabel?
文本内容
文本字体
文本颜⾊
文本对其⽅式
文本换⾏模式
文本行数
文本阴影
如何使⽤用UILabel
创建UILabel与创建UIView的步骤很相似。
1、开辟空间并初始化(如果本类有初始化⽅方法,使⽤用⾃自⼰己的;否则使⽤用⽗父类的)。
2、设置⽂文本控制相关的属性
3、添加到⽗父视图上,⽤用以显⽰示
4、释放
UILabel使⽤用⽰示例
UILabel *userNameLabel = [[UILabel alloc]
initWithFrame:CGRectMake(30, 100, 100, 30)];
userNameLabel.text=@"⽤用户名";[containerViewaddSubview:userNameLabel];[userNameLabelrelease];
控制⽂文本显⽰示
UILabel的主要作⽤用是显⽰示⼀一段⽂文本,因此提供了很多与显⽰示⽂文本相关的API
小节
UIView是所有可视化控件的基类。UILabel是具有特定外观特定功能的视图。UILabel侧重于⽂文本的呈现。
总结
App靠window来呈现内容,⼀一个程序⼀一般只创建⼀一个window。
App中能看到的元素,都是UIView及其⼦子类。
UIView作为所有可视化控件的BaseClass,提供了许多属性和⽅方法。显⽰示效果控制(frame、alpha等)、视图添加和移除(addSubview:等)、视图层次调整(bringSubviewToFront:等)等。
UILabel属于具体的视图,有⾃自⼰己的侧重点
/*****************************代码*************************************/
UIView里布局
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
self.backgroundColor=[UIColor cyanColor];
[self addAllViews];
}
return self;
}
-(void)addAllViews{
UIImage *image=[UIImage imageNamed:@"1.jpg"];
UIImageView *imageView=[[UIImageView alloc]initWithImage:image];
imageView.userInteractionEnabled=YES;
imageView.frame=CGRectMake(60, 100, 200, 200);
imageView.backgroundColor=[UIColor redColor];
imageView.tag=101;
[self addSubview:imageView];
}
ViewController 布局
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
//self.view.backgroundColor=[UIColor cyanColor];
self.rootView=[[RootView alloc]initWithFrame:[UIScreen mainScreen].bounds];
}
return self;
}
//加载视图
-(void)loadView
{
self.view=self.rootView;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
UIImageView *imV=(UIImageView *)[self.rootView viewWithTag:101];
//手势(常见六大手势)
//所有手势都在控制器中添加
//轻点
UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(g:)];
//设置点几下
tap.numberOfTapsRequired=2;
tap.numberOfTouchesRequired=1;
[imV addGestureRecognizer:tap];
//长按
UILongPressGestureRecognizer *lp = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(lg:)];
lp.minimumPressDuration = 1;//按下后几秒开始有反应
[imV addGestureRecognizer:lp];
//轻扫
UISwipeGestureRecognizer *sp = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(sg:)];
[imV addGestureRecognizer:sp];
sp.numberOfTouchesRequired = 1;
//拖动
UIPanGestureRecognizer *pg = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(tuoDong:)];
[imV addGestureRecognizer:pg];
pg.minimumNumberOfTouches = 1;
pg.maximumNumberOfTouches = 10;
//捏合//
UIPinchGestureRecognizer *nh = [[UIPinchGestureRecognizer alloc]
initWithTarget:self action:@selector(nieHe:)];
[imV addGestureRecognizer:nh];
//旋转
UIRotationGestureRecognizer *rg = [[UIRotationGestureRecognizer alloc]
initWithTarget:self action:@selector(xz:)];
[imV addGestureRecognizer:rg];
}
AppDelegate 添加ViewController
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
RootViewController *rv=[[RootViewController alloc]init];
self.window.rootViewController=rv;
[self.window makeKeyAndVisible];
return YES;
}