开始

很早就想开始写博客,记录自己技术成长的点滴,但一直拖到现在才开始,拖延症的后果哭,还好现在也不算晚。简单介绍一下自己,2009年就读于华南理工大学信息工程专业,说实话我们专业有点偏硬件,当然也有一些涉及软件的课程,现在来想当时选专业有点迷茫,只是有个做工程师的想法,觉得工程师很牛B而已,但并没有对信息工程这个专业有深入的了解,大家引以为戒,好像扯得有点远,回来,毕业之后直接回昆明一家工业机器人公司,偏工业,不喜欢,不到半年辞职回到广州,做游戏开发,一个契机转做iOS应用开发,至今也是在做iOS。下面是干货部分,是这段时间iOS遇到的一些问题和总结,第一次总结,多而杂,想到哪写到哪。

1.最近在做一个日历的模块,用UICollectionView(基础用法网上很多,自己百度),遇到一个深坑。每个cell之间间距为0做不到,只能设置layout最小间距为0,顾名思义有可能还是会存在间距。每一行有7天,就是7个cell,整个UICollectionView宽度就是屏幕宽度-20pt(左右各留10pt),那cell的宽度应该是(DeviceWidth-20)/7,但没那么简单,实际效果是一些cell之间仍然有1pt的间隔,问题出在哪呢?问题就在于UICollectionView的宽度和cell的宽度,比如(DeviceWidth-20)/7=50.7,在2倍屏上只会用50.5pt来画(也就是101px),所以总的就会留出0.2*6=1.2pt的位置,这就是做不到0间距的原因。解决方案很简单,就是对cell的宽度取整(因为还要考虑一倍屏幕的情况,所以取整),乘以7动态改变UICollectionView的宽度,完事。其实这个问题就是由于像素而产生的,这里不多说,因为我可以说一天,但最基本的就是:

1倍屏:1pt = 1px;

2倍屏:1pt = 2px;

3倍屏:1pt = 3px;(px的最小单位当然是整数,其余的自己感受)


2.社会化分享

我用的友盟,需求有微信好友,朋友圈,QQ好友,新浪微博,先去友盟注册,会给你一个appKey,然后是腾讯开放平台,新浪开放平台各种注册,此处省略一万字,细心点,没什么问题,我就不贴代码了,友盟上的代码够你看了,根据你的需求先下载SDK,把包导入工程,按照友盟的教程一步步来,没什么难度可言,关键细心,demo不用下,直接看文档就行。


3.设置访问器

<span style="white-space:pre">	</span>@property (nonatomic, strong)NSNumber *number;
在自身的.m文件中可以有两种当时引用_number和self.number,后者会调用get或set方法,尽量多用前者,除非你重写了get或set方法,并且确定要调用次方法。


4.图片全屏查看

没做过类似的功能,刚开始想着添加手势,移动,缩放,后来发现想太多,用个UIScrollView搞定。UIScrollView上面加一个UIImageView,实现UIScrollView的代理。

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return _imageView;
}
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
}
第一个代理很重要,返回要绑定在scrollView上面缩放的view,第二个代理用来调整_imageView的frame。


5.相册、照相机访问

用UIImagePickerController实现。

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    picker.allowsEditing = YES;
    picker.delegate = self;
    [self.navigationController presentViewController:picker animated:YES completion:nil];

<pre name="code" class="objc">UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        picker.allowsEditing = YES;
        picker.delegate = self;
        [[XbedRootViewController getInstance] presentViewController:picker animated:YES completion:nil];

 实现代理,总的就三个代理方法,有一个是2.0到3.0的果断放弃它,还有一个是取消时的回调,还有一个完成时的回调比较重要: 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info;
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;
info是一个字典,可以打印出来自己看下,比较重要的是取得拍照后的图片或者选中的相册图片
UIImage *image = [info valueForKey:UIImagePickerControllerEditedImage];


6.最近做了一个app引导页,需求时滑动的时候下面有一张大图在旋转,和以往的scrollView直线运动不一样,这个是圆弧运动。方法:先添加一个UIScrollView,但不做显示,设置pagingEnable=YES,设置代理,实现代理方法。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat xf = scrollView.contentOffset.x/scrollView.contentSize.width;
    _scrollImageView.transform = CGAffineTransformMakeRotation(-M_PI*2*xf);
}
_scrollImageView是你要旋转的那张图片,简单的说就是让它的旋转弧度跟随UIScrollView的偏移量。


目前就想到这么多,刚开始写,可能有点多也有点杂,以后尽量一篇文章一个技术主题,希望能和大家一起进步。 奋斗










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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值