iOS 在开发过程中的 零碎知识点

来源:互联网 发布:淘宝中老年男装 编辑:程序博客网 时间:2024/05/16 02:51

将page转变为 word 只需要将 导出的时候为word 就好了。

 当xcode 出现一些奇葩的问题的时候, 可以clean 一下, 也许就好了

当有两个UIcollectionView的时候, 注意,在UIcollectionView的代理方法中需要区分一下

Xcode7 需要点击option键 能找到finder-前往-资源库(好像 首先是要把隐藏的文件打开)

对一个控件描边的方法: 

   self.layer.borderWidth = 1.0f;

   self.layer.borderColor = [UIColor colorWithHexString:@"dddddd"].CGColor;


 当下面是图片 ,又可以点击的话, 可以上面放一个按钮,button 可以设置的大一些,这样比较容易点击  注意:button 超出 父类的那部分的点击事件 是无效的


关于tabBar在push 后会不会隐藏的问题, 

当你push前,先  self.hidesBottomBarWhenPushed = YES;

在push

push 后  self.hidesBottomBarWhenPushed = NO;(加上这句话,当再次返回到这个页面的时候,tabbar还是有的,如果不加,那么tabbar是没有的)



利用KVO监听的方式 来判断textView里面有多少字体是行不通的, 因为,它的的text属性对应的值的改变 的方式不符合KVC模式,所以,还是用textView的代理方法比较好

(void)textViewDidChange:(UITextView *)textView 里面可以用多线程,提高效率


在屏幕适配的时候,当设置两个控件的宽或者高的比例的时候,我们需要知道哪个是第一个fristItem 和 secondItem,那么当你鼠标移动到fristItem的时候,控件会有一个蓝色的框框的提示,如图所示,还有 mutinu (*)那里说的是比例  fristItem  relation(=) secondItem * multiplier + constant

在一个工程中,可以有多个storyboard, 当你创建 了一个新的storyboard的时候,并且想打开程序先运行的就是这个storyboard, 可以在plist 文件里面直接改 storyboard的名字 比如:Main—>Main2 也可以,点击项目,在TARGETS里面的 deployment info 里面改 

 

屏幕适配: 如果让三个btn 等宽等高, 那么把三个btn都选中, 然后在equ widths,equ heights,就可以实现 等宽等高了,当然也可以给三个控件实现宽度1:2:1 等等这样的比例,就是先选中一个equal Widths 设置一下两个控件之间的比例,在选中另外一个equalWidths 在设置两个控件之间的比例就好了


屏幕适配, 当有控件嵌套的时候,你需要注意,注意最好就是平级控件之间做调整,还有,当一个页面控件特别多,不是很好做屏幕适配的时候,你最好用一个大容器装几个小控件,这样一个页面中 先布局几个大控件,这样比较好控制,然后在布局每个大控件中的几个小控件的布局,这样会相对轻松一些


屏幕适配: 当在XIB或者Storyboard上面配置固定的约束条件需要修改的时候,那么,可以将约束拉到.m中,给它重新赋值,在viewDidLoad里面的才是最终的结果 例如:

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *magin1;


写单利模式的时候经常会看到下面的这种形式:

static dispatch_once_t predicate;

dispatch_once(&predicate,^{

center = [[UserInfoMangerCenter alloc]init];

})

其实不用 dispatch_once 也是可以的,也是所有的类都可以用这个信息,信息也是共享的,但是,当两个类同时使用这个对象的时候,就可能发生冲突,为了线程安全,我们用dispatch_once


单例模式:易于外界访问,共享信息,在多个类中都可以使用appdelegate,viewController,view 中都可以使用,好处就是他们使用的是同一个对象,信息共享了,当然也破坏了封装性,但是这个缺点相对于优点而言,可以忽略



常见的错误,和调试

 

//NSString* cName = [NSString stringWithFormat:@"%@",  self.title]; // 这个就把self.title格式化了,即使为nil,也变成@“null”了, 所以直接写 self.title,就省去了很多麻烦

    NSString *cName = self.title;

    

    if (cName== nil) {

        cName = NSStringFromClass([self class]);

    }


在有断点的时候, 鼠标指向某一个属性,它就会直接把这个属性对应的值显示出来的,不用一直在那NSLog,还有在控制台的时候,也可以用 po self.title   点击enter键 值就出来了

视图控制器的self.view 它是包括 导航条那里的,不信你可以在XIB,或者storyBoard上 点击一下View看看,而且self.view 的位置是可以移动的,而不是说只能充满屏幕,self.view 下面是win


在ios的Deployment info 里面的Deployment Target 里面,我们需要选择小于等于我们操作系统的版本,比如手机是ios9.2 那么这里面就应该选小于等于9.2的,可以选择7,因为现在还是有人用ios7 系统


对于贝塞尔画曲线的时候, 起点和终点 用的都是弧度值,x轴对应的是 0度,x轴上面是负的,x轴下面是正的,和以前的那种坐标系是不一样的

GCD的再次理解

同步的话,会是将方法执行完才会执行下一步,异步的话就是,不会等这个方法执行完另外一个方法就开始执行

GCD有串行和并发

主队列是串行

NSoperation 是对GCD的一个封装, 比GCD稍微慢一些,


masonry 是对autolayout的封装;


    当你打包好了 .ipa的时候, 你怎么给测试人员呢? 要同时把.ipa 和 AdHoc 这个profile文件 一同上传到itunes,这样那个才行,下载的时候去找就好了,这时候profile的作用就显示出来了,只有被认证的设备才能运行这个程序,当有版本更新的时候,就不需要将profile也加进去了,只需要将.ipa 拖拽进去就好了


provisioning profile 作用很大,如果把项目copy给别人,但是没有在指定的设备下是跑步起来的,这样就保护了我们的程序


当你做真机测试的时候,选得时是 development ---》ios development,当你做测试的时候给测试人员的时候选的是Distribution 然后是AD Hoc ,如果是上传到AppStore的话,就是Distribution,AppStore了


development 证书 是在开发的时候的需要的证书, production 这是在发布的时候(给测试人员 或者上传到appStore)的时候用的证书


id  identity


数组有一个方法 就是makeObjectPerformSelector:@selector(), 也就是数组会向它里面存的对象 发送一个方法,后面的withObject是 发送的方法的参数



当画图的时候,设置笔画线的颜色的时候[ [UIcolor color.....]set]; 注意需要set一下,这样线的颜色才能出来,而不是黑色



当视图的状态发生变化的时候,我们需要调用setNeedsDisplay这个方法

往数组或者字典里面添加对象的时候,需要注意,对象不能为空,若是空的话,当用到那个空对象的时候 程序会崩溃


在自己封装的类中,比如说是UIView,那个类是没有@interface 类名()...@end的,而在这里面,我们可以声明私有的属性,这就是属性的扩展(类目的特例)


CGRectContainsPoint(btn.frame,point), 返回值是bool,如果point 在btn.frame 里面的话,就返回true,反之返回false


const 是定义的只读的变量名,也就是这个变量 只可读,不可改(那么能改嘛?自己试试)在其他的类中不能声明同样的变量名


initWithFrame:(CGRect)frame 这个时通过代码创建这个对象的时候,会调用这个方法, 而,initWithCoder:(NSCoder:aDecoder) 是通过storyboard 或者XIb文件创建对象的时候 会调用


 当一个页面 出现单击和双击的时候, 会出现互斥的情况, 所以,我们需要写一个方法就是:tap requireGestureRecongnizerToFail:tap2也就是说,当两个条件都满足的时候,tap2 条件不满足的时候,才可以执行tap1,如果tap2满足的话,就不执行tap1了也就是:当两个手势都出现的时候,执行手势tap2,而不是tap1





0 0
原创粉丝点击