iOS开发笔记(二)

这是本人在开发中简单整理的iOS笔记,有点凌乱吧  哈哈。不过内容简单易懂  希望你能喜欢。微笑微笑

1.UIView不接收触摸事件的情况

> 设置了不接收用户交互userinteraenabled = NO(提醒:UIImageView默认userinteraenabled = NO,当然它的子控件也是不能接收到触摸事件的

> 隐藏hidden = YES

> 设置了透明度alpha = 0.0 ~ 0.0.1

> 子视图的位置超出了父视图的有效范围,子视图无法交互设置了 


2、响应者链的事件的事件传递过程

> 如果view的根控制器存在,就传递给控制器;如果控制器不存在,则将其传递给它 的父视图

> 在视图层次结构的最顶级视图,如果它也不能接收到事件或者消息,则将其事件传递给window对象处理

> 如果连window对象也不能处理,则将其事件或消息传递给application对象

> 如果application也不能处理该事或者消息,则将其丢弃


3、segue的类型

storyboard上每一根用来界面跳转的线,都是一个segue对象  它可以分为两种类型的segue

> 自动型:触摸某一控件,它会自动执行segue,界面自动完成跳转

>  手动型:需要手动执行segue 界面才会跳转

如果有两条执行的segue的话,我们需要为两条segue做标记 方法如下:

[self performSegueWithIdentifier:@“fromTo" sender:参数];

这个方法必须在执行必须在源控制器中执行。


调用sourceViewController的下面方法,做一些跳转前的准备工作并且创建好的segue对象- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:参数

这个sender就是当初performSegueWithIdentifier中传的sender


4、UITabBarController添加子控制器的两种方法

> 添加单个子控制器 [self addChildViewController:(UIViewController *)childViewController]

> 设置UITabBarController的数组属性 @property (nonatomic, copy) NSArray *viewControllers


5、切换控制器的显示方式

我们会想到navigationcontroller的push之外 还有另外一种切换控制器的方法 那就是Modal,基本上所有的控制器都能用该方法。它会以一种 从底部往上钻的效果,然后盖在之前的控制器。-

显示控制器: (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion

销毁控制器:- (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion;

  

6、UIView和CALayer该怎么做选择

我们知道UILayer能跟UIImageView实现一样的效果,既然一样,那在开发当中 我们有些时候在如何做选择呢 ?? 其实view多了一个事件处理的功能,也就是说,layer不能处理用户的触摸事件,而View能实现触摸的功能。总结需要用户交互用View;不需要用户交互  两者都可以。另外layer的性能会高点,毕竟人家少了事件处理的功能,相对view来说 比较轻量级。哈


7、隐式动画

手动创建的layer对象 都存在隐式动画(非根层)



8、发布应用的时候,一次性将NSLog语句移除。

#ifdef DEBUG 

#define JHLog(...) NSLog(__VA_ARGS__)

#else 

#define JHLog(...)

#endif


9、报错"_u_errorName", referenced from:

      _rkl_NSExceptionForRegex in RegexKitLite.o

      _rkl_makeNSError in RegexKitLite.o

      _rkl_userInfoDictionary in RegexKitLite.o

需要在frameworks中导入libicucore.dylib库。


10、Xcode加载图片的时候只能用png

虽说xcode能看到JPG的图片,在有些时候会加载不成功 会提示:Cannot find executable for CFBundle 0x8c6a610 </Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/System/Library/AccessibilityBundles/CertUIFramework.axbundle> (not loaded)

所以必须使用png的图片。但是你真的要使用JPG,就只能在添加后缀名了

如:self.imageView.image = [UIImage imageNamed:@"jj.jpg”];


11、UITabBarController的title设置

在VC中设置self.title,会导致navigation的title和tabbar的title一起被修改。

而设置导航栏的title属性时,需要用self.navigationItem.title 设置


12、清除图片缓存

当我们用SDWebImage进行图片的显示和缓存的时候,缓存的内存会累积,达到了一定程度的时候,我们就有必要进行清除缓存了。我们得清理内存和硬盘。

清除内存:

 [[SDImageCache sharedImageCache] clearMemory];

清除硬盘:

[[SDImageCache sharedImageCache] cleanDiskWithCompletionBlock:<#^(void)completionBlock#>]



13、判断图片是否成功保存到相册中

当我们想保存照片到系统相册的时候,不知道它是否保存成功了没.因此得提示用户。        UIImageWriteToSavedPhotosAlbum(newImage, self, @selector(), nil);

我们不知道selector该写什么最好,我觉得还是按系统提供来比较好。请在该方法按住option键 会看到系统的方法,建议还是使用它比较好- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo



14、通知和代理的区别

相同点:都能实现对象之间的信息传递。

不同点:代理是一对一的对应关系(就是单纯的代理方跟委托方的关系); 而通知是多对多的关系(一个对象能通知多个对象发生什么事,一个对象能知道多个对象发生了什么事)。



15、UIScrollView的代理实现放大缩小的主要方法

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView  而指定视图的具体实现由scrollview完成。by the way 也可以设置scrollview的最大/最小缩放比例maximumZoomScale/minimumZoomScale


如果有什么好的建议,请联系虾米,虾米感激不尽 蟹蟹 哈!!微笑微笑

虾米联系方式:

QQ:584837022

github:https://github.com/ios-cjh



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值