• 问题总会出现,不过解决问题的方法也会出现!!!

UI控件04-基础控件示例02-综合

UI控件 小雨 535次浏览 已收录 0个评论

如何使某个视图在屏幕顶层显示(UIView的视图层次管理)?

修改一个view的显示层次只需要调用其父视图对应的方法。
bringSubviewToFront()方法可以将指定的视图推送到前面
sendSubviewToBack()方法可以将指定的视图推送到背面

[self.view bringSubviewToFront:self.imageView];
[self.view sendSubviewToBack:self.imageView];

状态栏

在iOS7中,状态栏默认情况下归控制器管理,比如状态栏的样式、状态栏的是否可见
控制器通过重写以下方法来控制状态栏
设置状态栏的样式
(UIStatusBarStyle)preferredStatusBarStyle;
其中UIStatusBarStyleLightContent是白色样式
设置状态栏的可见性
– (BOOL)prefersStatusBarHidden;

// 修改statusBar (状态栏)的样式
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}

Retina屏幕

所谓Retain屏幕,就是高清视网膜屏幕,分辨率宽高是标准屏幕分辨率的2倍

UI控件04-基础控件示例02-综合

在retina屏幕下一个点表示2像素, 在非retina屏幕下一个点表示1像素。
在iPhone6 plus 下一个点表示3个像素

结论1:

在同样一个尺寸的屏幕下由于使用的屏幕不一样(retina和非retina),所以造成的屏幕分辨率会不同。也就是说,同样是30*30的像素,在3.5 inch大小的屏幕上,如果是非retina显示会大一些, retina屏幕显示会小一些。

结论2:

所以在开发中使用的是点。(比如使用30*30,不是表示30像素,而是表示30点,这样的话iOS系统会自动把点转换为对应的像素)。
1> 非retina屏幕1个点表示1像素
2> retian屏幕1个点表示2像素
3> iPhone6 Plus下1个点表示3像素

结论3:

因为程序中的是点, iOS系统会自动把点转换为不同的像素去找图片, 所以图片对应的也要准备多份不同的图片。
@2x (视网膜屏幕, 在原来点坐标的大小上乘以2)
@3x
比如:btn_left这张图,在代码中写的时候使用的是btn_left,
iOS会根据实际的屏幕去查找btn_left.png或者是btn_left@2x.png或者btn_left@3x.png

Default-568h@2x
568表示iPhone5,h 表示高度
上面的这些都是固定写法,顺序不能调换

总结:

iOS开发面向的是点坐标系,不是像素。

应用程序启动图片

一个app在启动过程中会全屏显示叫做Default.png的图片
不用规格Default的使用场合
Default.png:非retina-iPhone屏幕(3.5 inch),320×480
Default@2x.png:retina-iPhone屏幕(3.5 inch),640×960
Default-568h@2x.png:4 inch的retina-iPhone屏幕,640×1136
Default-Portrait~ipad.png:非retain-iPad竖屏屏幕,768×1024
Default-Portrait~ipad@2x.png:retain-iPad竖屏屏幕,1536×2048
Default-Landscape~ipad.png:非retain-iPad横屏屏幕,1024×768
Default-Landscape~ipad@2x.png:retain-iPad横屏屏幕,2048×1536

应用程序图标

只要文件名叫做Icon.png,就会自动被当做是应用程序的图标
一个应用程序可以准备多种规格的图标,详情可以查看苹果官方文档,如下图

UI控件04-基础控件示例02-综合

UI控件04-基础控件示例02-综合

便捷获取UIButton当前状态下的属性

UIButton有很多种状态,它提供了一些便捷属性,可以直接获取当前状态下的文字、文字颜色、图片等

@property(nonatomic,readonly,retain) NSString *currentTitle;
@property(nonatomic,readonly,retain) UIColor *currentTitleColor;
@property(nonatomic,readonly,retain) UIImage *currentImage;
@property(nonatomic,readonly,retain) UIImage *currentBackgroundImage;

启动页面:

LaunchScreen.storyboard/xib 只支持到iOS 8
Xcode6与Xcode7的区别

UI控件04-基础控件示例02-综合

通过设置 Launch Image Source
必须删除 Launch Screen File 中的文字

UI控件04-基础控件示例02-综合

appIcon: 是适用不同的场景: 安装应用的图标, 搜索, 流量, appStore
LaunchImage: 适应不同的屏幕

@2x , @3x : 一种固定的命名格式,
// 具体使用什么规格的图片, 由系统来判定
[UIImage imageNamed:@”btn_01″];

数组遍历Block方式:

// obj : 数组中的对象
// idx : 索引, 数组的下标
// *stop : 设置为YES的时候, 就会停止遍历
[_answerView.subviews enumerateObjectsUsingBlock:^(__kindof UIView * __nonnull obj, NSUInteger idx, BOOL * __nonnull stop) {
UIButton *answerButton = obj;
}];

让数组中每一个对象都执行同一个方法

[_answerView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

禁止用户交互

// userInteractionEnabled设置为NO时, 将不再接受任何用户交互事件
// 父view被设置了, 子view 也是同样不接受用户交互事件

_optionView.userInteractionEnabled = NO;

常用的Xcode快捷键:

打开辅助编辑器: command + option + 回车键
关闭辅助编辑器: command + 回车键

在.h 和 .m 文件之间跳转
control + command + 上下键

移动整行代码:
command + option + “[” / “]”

整个单词的跳动:
option + 左右键

单行上下跳转
control + n / p

光标(左右)移动
control + f / b


本博客内容既有转载自网络的内容,也有本作者原创内容,仅供学习与交流之用
如有侵权或者错误之处,请及时在下方留言!
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址