TGCameraViewController 2.2.8

TGCameraViewController 2.2.8

测试测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2017年1月

Bruno Tortato FurtadoMario Cecchi 维护。




  • Bruno Tortato Furtado 和 Mario Cecchi

TGCameraViewController

具有 AVFoundation 的自定义相机。美观、轻量且易于与 iOS 项目集成。支持 Objective-C 和 Swift。

  • 完全自定义的 AVFoundation 相机
  • 自定义视图,相机权限被拒绝
  • 自定义按钮颜色
  • 轻松访问相册(相册)
  • 自动、关闭和开启闪光灯
  • 对焦
  • 前置和后置摄像头
  • 网格视图
  • 带有三个过滤器(快速处理)的预览照片视图
  • 类似 Instagram iOS 应用的视觉效果
  • 支持 iPhone、iPod 和 iPad

要求:iOS 8 或更高版本。

谁在用这个

查找 谁在使用 TGCameraViewController 并将您的应用程序添加到列表中。

添加到您项目中

CocoaPods 是将 TGCameraViewController 添加到您的项目的推荐方式。

在您的 Podfile 中添加 TGCameraViewController 的 pod

pod 'TGCameraViewController'

运行以下命令以安装 pod:

pod install

或者,您可以直接下载最新的代码版本 master.zip 并将其导入到项目中。

隐私(iOS 10)

如果您使用 iOS 10 或更高版本构建应用程序,您需要在应用程序的 Info.plist 中添加两个隐私密钥,以允许使用相机和照片库,否则您的应用程序将崩溃。

将以下键添加到您的 Info.plist 文件中 <dict> 标签,用您希望用于提示用户的描述替换字符串

    <key>NSPhotoLibraryUsageDescription</key>
    <string>Enable Photos access to import photos from your library.</string>
    <key>NSCameraUsageDescription</key>
    <string>Enable Camera to take photos.</string>

使用方法

以下是使用 Objective-C 的一些示例。您可以克隆项目以找到 Objective-CSwift 3 的示例项目。如果您需要 Swift 2.3 的示例,请参考版本 2.2.5。

拍照

#import "TGCameraViewController.h"

@interface TGViewController : UIViewController <TGCameraDelegate>

@property (strong, nonatomic) IBOutlet UIImageView *photoView;

- (IBAction)takePhotoTapped;

@end



@implementation TGViewController

- (IBAction)takePhotoTapped
{
    TGCameraNavigationController *navigationController =
    [TGCameraNavigationController newWithCameraDelegate:self];

    [self presentViewController:navigationController animated:YES completion:nil];
}

#pragma mark - TGCameraDelegate optional

- (void)cameraWillTakePhoto
{
    NSLog(@"%s", __PRETTY_FUNCTION__);
}

- (void)cameraDidSavePhotoAtPath:(NSURL *)assetURL
{
    // When this method is implemented, an image will be saved on the user's device
    NSLog(@"%s album path: %@", __PRETTY_FUNCTION__, assetURL);
}

- (void)cameraDidSavePhotoWithError:(NSError *)error
{
    NSLog(@"%s error: %@", __PRETTY_FUNCTION__, error);
}

#pragma mark - TGCameraDelegate required

- (void)cameraDidCancel
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

- (void)cameraDidTakePhoto:(UIImage *)image
{
    _photoView.image = image;
    [self dismissViewControllerAnimated:YES completion:nil];
}

- (void)cameraDidSelectAlbumPhoto:(UIImage *)image
{
    _photoView.image = image;
    [self dismissViewControllerAnimated:YES completion:nil];
}

@end

选择照片

#import "TGCameraViewController.h"

@interface TGViewController : UIViewController
<UINavigationControllerDelegate, UIImagePickerControllerDelegate>

@property (strong, nonatomic) IBOutlet UIImageView *photoView;

- (IBAction)chooseExistingPhotoTapped;

@end



@implementation TGViewController

- (IBAction)chooseExistingPhotoTapped
{
    UIImagePickerController *pickerController =
    [TGAlbum imagePickerControllerWithDelegate:self];

    [self presentViewController:pickerController animated:YES completion:nil];
}

#pragma mark - UIImagePickerControllerDelegate

- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    _photoView.image = [TGAlbum imageWithMediaInfo:info];
    [self dismissViewControllerAnimated:YES completion:nil];
}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

@end

更改颜色

@implementation TGViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIColor *tintColor = [UIColor greenColor];
    [TGCameraColor setTintColor:tintColor];
}

@end

选项

选项 类型 默认值 描述
kTGCameraOptionHiddenToggleButton NSNumber (YES/NO) NO 显示或隐藏切换前后摄像头的按钮
kTGCameraOptionHiddenAlbumButton NSNumber (YES/NO) NO 显示或隐藏允许用户从其相册中选择照片的按钮
kTGCameraOptionHiddenFilterButton NSNumber (YES/NO) NO 显示或隐藏允许用户过滤其照片的按钮
kTGCameraOptionSaveImageToAlbum NSNumber (YES/NO) NO 是否将照片保存到相机胶卷
#import "TGCamera.h"

@implementation UIViewController

- (void)viewDidLoad
{
    //...
    [TGCamera setOption:kTGCameraOptionHiddenToggleButton value:[NSNumber numberWithBool:YES]];
    [TGCamera setOption:kTGCameraOptionHiddenAlbumButton value:[NSNumber numberWithBool:YES]];
    [TGCamera setOption:kTGCameraOptionHiddenFilterButton value:[NSNumber numberWithBool:YES]];
    [TGCamera setOption:kTGCameraOptionSaveImageToAlbum value:[NSNumber numberWithBool:YES]];
    //...
}

- (IBAction)buttonTapped
{
    //...
    BOOL hiddenToggleButton = [[TGCamera getOption:kTGCameraOptionHiddenToggleButton] boolValue];
    BOOL hiddenAlbumButton = [[TGCamera getOption:kTGCameraOptionHiddenAlbumButton] boolValue];
    BOOL hiddenFilterButton = [[TGCamera getOption:kTGCameraOptionHiddenFilterButton] boolValue];
    BOOL saveToDevice = [[TGCamera getOption:kTGCameraOptionSaveImageToAlbum] boolValue];
    //...    
}

@end

要求

TGCameraViewController 适用于 iOS 8.0+ 版本,兼容 ARC 项目。它依赖于以下苹果框架,这些框架应已包含在大多数 Xcode 模板中

  • AssetsLibrary.framework
  • AVFoundation.framework
  • CoreImage.framework
  • Foundation.framework
  • MobileCoreServices.framework
  • UIKit.framework

为了构建 TGCameraViewController,您需要 LLVM 3.0 或更高版本。

待办事项

  • 支持横向模式
  • 缩放
  • 图像大小作为全局参数
  • 快速动画
  • 创建自定义选择器控制器
  • 缩放功能不适用于相册中的图片

许可

此代码根据 MIT 许可证 的条款和条件进行分发。

变更记录

每个 TGCameraViewController 版本的简要总结可以在 发布记录 中找到。