iOS知识点-概念
- 浅复制就是指针拷贝;深复制就是内容拷贝。
- 关于控件的继承关系:
(1)所有的控件都继承自 UIView。
(2)能监听事件的都是先继承自 UIControl,UIControl 再继承自 UIView。比如 UIButton。
(3)能整体滑动的都是继承自 UIScrollView,UIScrollView 再继承自 UIView。比如 UITableView。
(4)UIWindow 也是继承自 UIView。
- 延时执行
方法 1:
performSelector(SEL) withObjects:(id) afterDelay:(NSTimeInterval);
方法 2:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)),
dispatch_get_main_queue(), ^{
//需要延时执行的代码
});
- 图片拉伸
-
假设有一张图片:
UIImage *myImage = [UIImage imageNamed:”pic”];方法一:
[myImage stretchableImageWithLeftCapWidth:(NSInteger) topCapHeight:
(NSInteger)];
两个参数分别是左侧和上面的距离,相当于设置 android 的 9-pach 他图片的拉伸区域。 方法二:(常用)[myImage resizableImageWithCapInsets:(UIEdgeInsets)];
可以传一个参数 UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right),
-
例如,我们自定义一个方法:
+ (UIImage *)resizableImage:(NSString *)name {
UIImage *normal = [UIImage imageNamed:name];
CGFloat w = normal.size.width * 0.5;
CGFloat h = normal.size.height * 0.5;
return [normal resizableImageWithCapInsets:UIEdgeInsetsMake(h, w, h, w)];}
方法三:
[myImage resizableImageWithCapIsets:(UIEdgeInsets) resizingMode: (UIImageResizingMode)];
这三个方法均返回一个新的 UIImage。
- layoutSubviews 方法
当发生下面两种情况该方法会被调用:
(1)一个控件的 frame 发生改变的时候。
(2)布局子控件的时候
- UIApplication 的常用属性
1、设置应用程序图标右上角的红色提醒数字
@property(nonatomic) NSInteger applicationIconBadgeNumber;
2、设置联网指示器的可见性
@property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible;
- 管理状态栏的方式:
第一种:
通过 UIViewController 管理(每一个 UIViewController 都可以拥有自己不同的状态栏)。
第二种:
通过 UIApplication 管理(一个应用程序的状态栏都由它统一管理)。
(1)状态栏的样式
- (UIStatusBarStyle)preferredStatusBarStyle;
(2)状态栏的可见性
- (BOOL)prefersStatusBarHidden;
利用 UIApplication 来管理状态栏
利用 UIApplication 来管理状态栏:
如果想利用 UIApplication 来管理状态栏,首先得修改 Info.plist 的设置。
UIWindow
- (void)makeKeyWindow;
让当前 UIWindow 变成 keyWindow(主窗口)。
- (void)makeKeyAndVisible;
让当前 UIWindow 变成 keyWindow,并显示出来。
获得 UIWindow
[UIApplication sharedApplication].windows
在本应用中打开的 UIWindow 列表,这样就可以接触应用中的任何一个 UIView 对象。
(平时输入文字弹出的键盘,就处在一个新的 UIWindow 中)
[UIApplication sharedApplication].keyWindow
用来接收键盘以及非触摸类的消息事件的 UIWindow,而且程序中每个时刻只能有一个 UIWindow 是 keyWindow。如果某个 UIWindow 内部的文本框不能输入文字,
可能是因为这个 UIWindow 不是 keyWindow。
view.window
获得某个 UIView 所在的 UIWindow。
- delegate设置rootviewcontroller