iOS 开发小记 (七)

最近要换地方工作了,整理下之前遇到的问题。

1、StatusBar

View controller-based status bar appearance

状态栏属性设置后,plist修改后才有效。

2、Auto Layout

Hugging priority 确定view有多大的优先级阻止自己变大。

Compression Resistance priority确定有多大的优先级阻止自己变小。

简单来说,Hugging的收缩的意思,就是当有A,B两个元素连在一起,当他们的superView变大的时候(A 和 B也要变大),哪个有更大的优先级保持原来的大小;

Compression Resistance 是压缩阻力的意思,就是A、B两个元素连在一起,当他们的superView变小的时候(A和B也要变小),哪个有更大的优先级保持原来大小;

3、modal半透明页面

弹出一个半透明的viewController:

在ib设置被弹出的展示方式:OverCurrentContext

然后再调用 presentViewController即可。

4、Xcode7 卡顿问题

Source Control 里面的 Automatically 全部关掉 ;

设置 >> 通用 >> 最近使用项目 (改成0) / 允许在这台 Mac 和 iCloud 设备之间使用 Handoff (关掉);

5、viewController生命周期

disappear 里面做一些取消监听的操作时,要考虑到Modal一个viewController的时候,会调用disappear;

同时在navigationController poptoroot的时候,中间的一些VC不会调用disappear。

6、ReactiveCocoa

RAC是基于KVO的,而NSMutableArray并不会在调用addObject或removeObject时发送通知;解决方案可以通过NSArray来解决;

与此类似,Textfield的text如果是代码设置值,不会触发信号。

view.frame 不参与KVO,bounds可以。

7、Cell 自适应

当实用UITableViewCell 的自动延伸时候,cell会自动添加一个height的约束。(可以把某个view 的height改成pro = 750,不会有warning)

一个类似微信朋友圈添加图片的功能(UICollectionView实现,通过修改constraint高度,让view自适应)。当添加一个图片的时候,

如果是放在UIViewController里面,修改constraint 的值,会导致view重新layout。

如果是放在UItableviewCell 里面的,修改constrant的值,会导致cell的重新layout,但是不会导致tableview layout。需要在cell调用一次layoutIfneed。

8、架构

MVC 和 MVVM 的关于网络层的区别:

MVC里面的Model可以做成单例,Message 可以独立出去,通过单例回调Model。model通过notify通知controller。

MVVM里面的model,不是单例,同时与controller的状态绑定,message集成在ViewModel里面。

9、AFNetworking

constructingBodyWithBlock

AFNetworking upload的时候才用这个参数

如果是普通的post,不能带有这个参数。

(对于不同的任务,AFNetworking会生成不同的task)

10、ReactiveCocoa 与 UI显示

RACOberserver 用于变动的内容;

如果是用户操作,发送协议,协议回来更新的,可以用subscribenext,在next中刷新显示;

flattenMap 不透传completed,里面的信号完成了只是外面的信号的开始,外面的信号完成了才有completed

text_signal 一般用next 不用completed

11、UISearchController

if the UISearchController is deallocated before its view is loaded, this warning will appear.

在用搜索的时候产生warning,那么下面的函数可以解决。

- (void)dealloc {
    [self.mySearchController.view removeFromSuperview];

}

12、视图切换

视图A modal 视图M 之后,如果要在modal  dismiss跳转,记得延迟到下一个runloop(或者直接延迟0.1s)

13、objective-c

A继承B,A重写了B的方法test,那么当A 调用 test是A之后的方法。

在super 中,self还是A,调用的还是A的test。

时间: 2024-10-10 06:50:54

iOS 开发小记 (七)的相关文章

IOS开发小记

1. 在view之间添加分割线的注意 第一种情况没有什么特别的,view之前是独立的,没有位置重合的情况. 第二中有重合区域,这里要注意的是,在iPad下如果分割线的宽度设置小于1,会出现显示在view进去视图的时,闪现一下,然后不可见. IOS开发小记,布布扣,bubuko.com

从零开始学ios开发(七):Delegate,Action Sheet, Alert

Action Sheet和Alert是2种特殊的控件(暂且称之为控件吧,其实不是控件真正的控件,而是ios中的2个类,这2个类定义了2种不同类型的用于和用户交互的弹出框),Action Sheet是从底部弹出,上面有2个或者2个以上的选项供用户选择,Alert就是一个警告框,上面有1个或者1个以上的按钮供用户进行选择. 在继续这一篇的内容之前,稍微花点时间说一下ios中用到的Delegate Pattern(委托\代理模式). ios中有很多已经定义好的类可以供我们在编写程序时直接使用,例如UI

iOS 开发小记 (九)

1,GCD的Concurrent.Serial queues Concurrent queues (also known as a type of global dispatch queue) execute one or more tasks concurrently, but tasks are still started in the order in which they were added to the queue. The currently executing tasks run

iOS 开发小记 (十)

2016年02月22日 - 元宵节 今日面试,有三个题目让我不太确定: 1,oc的协议和java的接口有何不同? oc的@protocol 有 @required 和 @optional. 2,UIView 和 CALayer有何区别? a.UIView可以响应事件,CALayer不行: b.UIView是对显示内容的管理,CALayer是对显示内容的绘制: c.每个UIView内都有一个CALayer提供内容的绘制和显示,view.frame简单的返回了view.layer.frame. ht

iOS 开发小记 (八)

过完年,整理下最近遇到的问题. 1,通过runtime动态添加Ivar 优点:动态添加Ivar我们能够通过遍历Ivar得到我们所添加的属性. 缺点:不能在已存在的class中添加Ivar,必须通过objc_allocateClassPair动态创建一个class,才能调用class_addIvar创建Ivar,最后通过objc_registerClassPair注册class. 参考 如何添加 http://blog.csdn.net/majiakun1/article/details/3851

ios 开发小记 (三)

platform :ios, '7.0' pod "AFNetworking", "~> 2.0" pods 文件原来是这样. 在用了xctest之后,就报错了:AFNetworking Cause Error while using XCTest in Xcode5. 要在中间加一句: link_with 'Supermark', 'SupermarkTests' -objc 的意思: 之所以使用该标志,和Objective-C的一个重要特性:类别(cate

iOS开发小记(十三)

1.软编码和硬编码如何区分 软编码:使用CPU进行编码 硬编码:使用非CPU进行编码,如显卡GPU.专用的DSP.FPGA.ASIC芯片等 2.连续的动画 NSOperationQueue 串行UIview和CAlayer 的动画 3.UIImageView UIImageView setAnimationImages 和 startAnimating 搭配使用 4.类加载函数 +(void)initialize Thus the method may never be invoked if t

iOS开发-UI (七)StoryBoard

知识点 1.UIStoryBoard介绍 2. UIStoryBoard的界面跳转 3. UIStoryBoard界面之间的传值 ========================= UIStoryBoard介绍 UIStoryBoard是你可以用来定义用户界面的一种新的方式,像xib.与xib不同的是它可以同时管理多个ViewController,而且可以在UIStoryBoard中配置ViewController 之间的跳转关系. 如果主窗口只有一个view controller是作为UISt

ios 开发小记 (二)

identity inspector 的key path 可以用来做圆角按钮和边框. layer.cornerRadius number  圆角按钮 使用代理模式的时候,要注意,A 和 B的引用之间会循环引用,导致内存无法回收. 可以使引用设置为weak. navigationBar 默认是透明的,颜色会进行高斯模糊处理.所以直接用RGB颜色赋值,最后的颜色效果会稍微淡一些. 解决方案:最开始的navigationBar设置为opaque. ios3.0 以后 苹果的sdk对这种情况做了调整,如