Category Archives: 项目实战(iOS)

使用AVFoundation自定义相机如何调整相机焦距

1、如何使用AVFoundation框架自定义相机请先参照iOS项目实战之自定义相机

2.1、上述帖子中有讲到,如果需要对焦,可以通过AVCaptureDevicesetFocusPointOfInterest:方法来实现,传入一个CGPoint值,但这里的CGPoint不是View上面的点,而是范围的0~1的相对百分点;

2.2、这个CGPoint如何得来呢,我们在点击屏幕时可以监听相关View的点击事件,添加一个UITapGestureRecognizer手势,在点时后,可以通过UITapGestureRecognizerlocationInView:方法得到CGPoint,这是一个绝对值,即点击了相关View上的某个点,有了这个点,再通过AVCaptureVideoPreviewLayer的一个转换方法:captureDevicePointOfInterestForPoint:可以将绝对点转换成相对点。[……]

继续阅读

百度地图经纬度与苹果地图经纬度之间的转换

在我们的项目中经常会用到百度地图这个第三方SDK,尤其是即有安卓版又有iOS版的项目,(如果只有单纯的iOS版App的项目我个人强烈建议使用苹果自带的地图,自从苹果引用高德地图为其系统自带地图后,地图及定位的使用已经非常方便了,封装得很好并且国内的服务器速度也非常快!)然后百度地图定位获取到的经纬度是不能直接与苹果自带的地图混用的,同样的经纬度在两个地图上标注显示的不是同一个地方,这样一来数据就会有偏差,如何使其两者很好的兼容呢?我们首先还是科普一下:

一、坐标体系

首先我们要明白,开发者能接触到哪些坐标体系呢?

第一种分类:
1、??GPS,WGS-84,原始坐标体系。一般用国际标准的GPS记录仪记录下来的坐标,都是GPS的坐标。很可惜,在中国,任何一个地图产品都不允许使用GPS坐标,据说是为了保密。GPS坐标形式如图,度分秒形式的经纬度。
2、??GCJ-02,国测局02年发布的坐标体系。又称“火星坐标”。在中国,必须至少使用GCJ-02的坐标体系。比如谷歌,腾讯,高德都在用这个坐标体系。GCJ-02也是国内最广泛使用的坐标体系。
3、??其他坐标体系。一般都是由GCJ-02进过偏移算法得到的。这种体系就根据每个公司的不同,坐标体系都不一样了。比如,百度和搜狗就使用自己的坐标体系,与其他坐标体系不兼容。

第二种分类:
首先明白,所有坐标体系的原点,都是非洲。
1、??经纬度。这个是球面坐标,对于北京来说,就是(116.38817139.935961)这样的坐标。比如腾讯、高德、百度都是这样的经纬度坐标。谷歌是经纬度顺序写反的经纬度坐标。如果是度分秒坐标,需要进行转换,才能得到这样的经纬度坐标。详见坐标转换。
2、??墨卡托坐标。平面坐标,相当于是直线距离,数字一般都比较大,像这样的。(215362.00021333335 99526.00034912192)墨卡托坐标,主要用于程序的后台计算。直线距离嘛,加加减减几乎计算方便。搜狗地图API就是直接使用的墨卡托坐标。[……]

继续阅读

iOS项目实战之自定义相机

一、基本思路
1、创建一个导航控制器,承载两个控制器:拍照、照片预览;
2、分别创建这两个控制器,由于视图均为静态视图,所以直接用xib创建即可;
3、引用AVFoundation框架,通过媒体与数据流的交互来获取图片;
4、各种封装

二、使用到的几个类及相关说明:
SAImagePickerController:继承导航控制器类,用他来创建一个自定义相机
SACameraCtrl:拍照控制器,即拍照主界面,取景,摄像头切换、闪光灯开关、拍照按钮都在这个界面上展示;
SAPhotoViewCtrl:照片预览控制器,即拍照后的预览界面,查看照片效果、确定使用照片或重拍;
SAPreview:自定义View,拍照取景的那个视图,自定义是为了能够监听处理该视图上的事件,如对焦等。

三、基本界面预览:[……]

继续阅读

iOS摇一摇的使用

一、实现系统自带的motionBegan方法

1
2
3
4
5
6
/// 开始
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event NS_AVAILABLE_IOS(3_0);
/// 结束
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event NS_AVAILABLE_IOS(3_0);
/// 取消
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event NS_AVAILABLE_IOS(3_0);

假如程序不响应此方法,再实现以下方法:

1
2
3
4
- (BOOL)canBecomeFirstResponder
{
    return YES;
}

[……]

继续阅读

如何判断当前iPhone的机型,iPhone代号对应关系

不多说,直接上代码,拿去用即可!!别问我是怎么知道,如果你有这么多手机的话你也可以去测。

1
2
3
4
5
+ (NSString *)deviceString
{
????struct utsname systemInfo;
????uname(&systemInfo);
????NSString *device[......]<p class="read-more"><a href="https://www.yusian.com/blog/project/2015/04/07/161807355.html">继续阅读</a></p>