前置摄像头填充圆形 UIView

2023-12-10

在我正在开发的应用程序中,用户需要进行“自拍”(是的,我知道,但该应用程序仅供私人使用)。

我已经让相机在圆形 UIView 区域中显示一切正常工作,但是我无法让它正确缩放并填充圆圈。这是它现在正在做的事情:

What it's doing

这就是我想要它做的事情:

What I want

这是我的 UIView 的代码:

var cameraView = UIView()
cameraView.frame = CGRectMake(100, self.view.center.y-260, 568, 568)
cameraView.backgroundColor = UIColor(red:26/255, green:188/255, blue:156/255, alpha:1)
cameraView.layer.cornerRadius = 284
cameraView.layer.borderColor = UIColor.whiteColor().CGColor
cameraView.layer.borderWidth = 15
cameraView.contentMode = UIViewContentMode.ScaleToFill
cameraView.layer.masksToBounds = true

我尝试了一些不同的 contentMode 选项,包括 ScaleToFill、ScaleAspectFill 和 ScaleAspectFit。它们都会产生完全相同的结果。


事实证明,相机的“self.previewLayer”有一个属性,可以确定相机的内容如何填充视图。

在下面的代码中,我将“self.previewLayer.videoGravity = AVLayerVideoGravityResizeAspect”更改为“self.previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill”

extension SelfieViewController:  AVCaptureVideoDataOutputSampleBufferDelegate{
    func setupAVCapture(){
        session.sessionPreset = AVCaptureSessionPreset640x480

        let devices = AVCaptureDevice.devices();
        // Loop through all the capture devices on this phone
        for device in devices {
            // Make sure this particular device supports video
            if (device.hasMediaType(AVMediaTypeVideo)) {
                // Finally check the position and confirm we've got the front camera
                if(device.position == AVCaptureDevicePosition.Front) {
                    captureDevice = device as? AVCaptureDevice
                    if captureDevice != nil {
                        beginSession()
                        break
                    }
                }
            }
        }
    }

    func beginSession(){
        var err : NSError? = nil
        var deviceInput:AVCaptureDeviceInput = AVCaptureDeviceInput(device: captureDevice, error: &err)
        if err != nil {
            println("error: \(err?.localizedDescription)")
        }
        if self.session.canAddInput(deviceInput){
            self.session.addInput(deviceInput)
        }

        self.videoDataOutput = AVCaptureVideoDataOutput()
        var rgbOutputSettings = [NSNumber(integer: kCMPixelFormat_32BGRA):kCVPixelBufferPixelFormatTypeKey]
        self.videoDataOutput.alwaysDiscardsLateVideoFrames=true
        self.videoDataOutputQueue = dispatch_queue_create("VideoDataOutputQueue", DISPATCH_QUEUE_SERIAL)
        self.videoDataOutput.setSampleBufferDelegate(self, queue:self.videoDataOutputQueue)
        if session.canAddOutput(self.videoDataOutput){
            session.addOutput(self.videoDataOutput)
        }
        self.videoDataOutput.connectionWithMediaType(AVMediaTypeVideo).enabled = true

        self.previewLayer = AVCaptureVideoPreviewLayer(session: self.session)
        self.previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill

        var rootLayer :CALayer = self.cameraView.layer
        rootLayer.masksToBounds=true
        self.previewLayer.frame = rootLayer.bounds
        rootLayer.addSublayer(self.previewLayer)
        session.startRunning()

    }

    func captureOutput(captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!) {
        // do stuff here
    }

    // clean up AVCapture
    func stopCamera(){
        session.stopRunning()
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前置摄像头填充圆形 UIView 的相关文章

  • NSString stringWithContentsOfFile 失败,错误代码似乎错误

    我正在尝试将文件加载到字符串中 这是我正在使用的代码 NSError error nil NSString fullPath NSBundle mainBundle pathForResource filename ofType html
  • .showsPhysics 内存泄漏

    我最近花了 5 个小时尝试调试 Spritekit 应用程序中的内存泄漏 应用程序启动后 我注意到内存使用量略有上升 我花了 5 个小时中的 3 个小时挖掘参考资料 了解强与弱的关系ARC https developer apple com
  • 如何从 ContentView 外部显示 SwiftUI 警报?

    我正在构建 Swift 应用程序 并试图找出如何显示警报 我有一个单独的 swift 文件正在执行一些计算 并且在某些条件下我希望它向用户显示警报 基本上告诉他们出了问题 然而 我见过的大多数例子都要求警报在ContentView或以其他方
  • React-native-vision-camera无法访问后面的普通摄像头

    我正在尝试在 iPhone 11 Pro 上使用 普通 相机 我使用反应本机视觉相机 当我运行这段代码时 const devices useCameraDevices const deviceBack devices back consol
  • 如何保护 iOS 应用程序免受任何操作系统攻击(在越狱设备上)

    我希望保护我的应用程序数据 以防任何操作系统攻击或越狱 iOS 设备上的未经授权的访问 在这种情况下 有什么方法可以检测此类威胁并保护应用程序数据 虽然我同意 jrturton 的说法 但如果您有想要保护的关键数据免受流氓应用程序 而不是用
  • Objective-C UILabel 作为超链接

    我正在尝试做一个UILabel一个链接UIWebView 我怎样才能做一个UILabel作为超链接 您可以使用 UITapGestureRecognizer 它将实现与您想要的类似的功能 UILabel myLabel UILabel al
  • 从一个模态视图无缝翻转到另一个模态视图,而不显示纯色背景

    我的 iPad 应用程序的 UI 如下 当我点击Settings按钮 我希望对话框水平翻转以显示设置对话框 我这个工作正常 但是 当对话翻转时会显示背景颜色 如你看到的 有什么办法可以让对话框翻转时不显示该颜色块吗 我希望它看起来更加无缝
  • ios swift parse:从 3 个类收集数据

    我有这样的结构 User CardSet 带有指向 User objectId 的指针 user 和 col name 带有点 cards 的卡片到 Card Set objectId 和列 name 我想选择所有卡数据 包括当前用户的卡集
  • 从按钮执行 Segue 时应用程序冻结

    我的故事板中有一个按钮 它呈现一个带有模式序列的视图控制器 每次按下此按钮时 应用程序都会冻结 没有崩溃 也没有错误消息 prepareForSegue被调用 所有应该存在的视图控制器都在代码中prepareForSegue 但它们不会出现
  • iOS:生成pdf时绘制文本时如何设置字体?

    我在ios应用程序中使用drawpdf函数生成pdf 同时调用nsobject类中的drawtext函数 它根据我指定的框架和字符串清楚地绘制文本 我的代码是 void drawText NSString textToDraw inFram
  • 如何在 Swift 中从 UIColor 获取 RGB 代码(INT)[重复]

    这个问题在这里已经有答案了 我想在 Swift 中获取 UIColor 的 RGB 值 let swiftColor UIColor red 1 green 165 255 blue 0 alpha 1 println RGB Value
  • UIView animateWithDuration:delay: 工作很奇怪

    我在使用 iPhone 动画块时遇到了一个奇怪的问题 这段代码 UIView animateWithDuration 2 delay 0 options 0 animations void controller setBackgroundC
  • 贴纸包会在模拟器上使 iMessage 崩溃,但在 iPhone 上不会崩溃

    按照 Apple 的在线说明和视频在 Xcode 中创建了一个贴纸包 所有图像的尺寸均正确且远低于文件大小阈值 如果我在我的实体 iPhone 上构建并运行贴纸包 一切都会完美运行 如果我在模拟器上构建并运行贴纸包 对于任何模拟的 iPho
  • 如何向标准 UIButton 添加徽章? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否可以在标准中添加看起来标准的徽章UIButton 如果不支持半原生 那么实现此目的最简单的方法是什么 示例图片 这是 Sascha
  • 访问目标 c 中的类方法。使用 self 还是类名?

    我正在学习 iOS 编程 并且对以下有关关键字 self 的使用的代码感到困惑 据我了解 self就像Java的this 它指的是当前实例 当我想调用类方法时 通常的方式应该是这样 PlayingCard validSuits 但是侵入实例
  • 在 UIWebView 中播放 Facebook 视频

    有谁知道如何在 Facebook 上播放视频UIWebView 我的应用程序将视频上 传到 Facebook 并检索视频的网址 我想将此网址嵌入到UIWebView播放 我已经为 youtube 解决了这个问题 但没有为 Facebook
  • TableViewController 的 viewDidLoad 未触发

    我一直在关注这个tutorial http www appcoda com ios programming sidebar navigation menu 有一个滑出式菜单 我添加了一个 TableViewController 它将显示文章
  • UIView 圆角 - Swift 2.0?

    我会尝试将一些项目更新到 Swift 2 0 我有一个视图 左上角有一个圆角 在 Swift 没有警告 没有错误 只是没有圆角 这就是它在 Swift let maskPath UIBezierPath roundedRect conten
  • 是否可以跨 2 个不同的 iOS 应用程序访问数据?

    假设我在 App1 中存储了一些 ID 数据 并希望在同一设备上的 App2 中访问它 平台上可以这样吗 如果没有的话有什么解决方法吗 您可以使用iOS 钥匙扣 http developer apple com library ios do
  • ios - 如何声明静态变量? [复制]

    这个问题在这里已经有答案了 C 中声明的静态变量如下 private const string Host http 80dfgf7c22634nbbfb82339d46 cloudapp net private const string S

随机推荐

  • 尝试在 Android 1.5 上使用 Base64 时出现“IllegalArgumentException: bad base-64”[已关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 I get java lang IllegalArgumentException bad
  • WPF ItemsControl ItemTemplate 边框与 GroupStyle

    这是我第一次发图片 所以希望效果很好 一张图片抵一千字 我不想打一千字 但是 下图是我想要实现的目标 我有一个需要按属性 组 分组的对象集合 我正在使用绑定到为我进行分组的数据源的 CollectionViewSource 我正在使用 It
  • Javascript函数不修改数组(参考?)

    如果 JavaScript 将函数参数作为原始对象的引用传递 为什么我不能使用这个简单的函数修改原始数组 var array1 one function change array var array2 222 array array2 ch
  • ADB 拒绝 shell 命令 (ls -l /data)

    我不断得到 ADB rejected shell command ls l data 以及运行时的命令提示符adb shell告诉我error device not found虽然模拟器是打开的 我做错了什么 我假设您从命令行运行 adb
  • 如何从unix中的给定日期获取上周日日期

    获取上周日日期作为给定日期 不是当前日期 作为输入的输出 输入示例 2017 年 8 月 30 日 m d Y 输出应该是上周日 08 27 2017 以下所有命令都使用当天作为参考 但我想将参考日期作为输入以获取上周日 请帮我执行命令 日
  • Scaffold-DbContext“登录失败”“错误号:4060,状态:1,类别:11”

    我的 ASP NET MVC 核心应用程序应通过实体框架连接到现有的 MSSQL LocalDB 文件 数据库优先开发需要对现有数据库进行逆向工程 按照中的说明进行操作官方文档 我在 NuGet 包管理器控制台中运行以下命令 Scaffol
  • R:无效的多字节字符串[重复]

    这个问题在这里已经有答案了 我使用不带任何参数的 read delim filename 来读取 R 中制表符分隔的文本文件 df read delim file 这按预期进行 现在我有一个奇怪的错误消息 我无法理解它 Error in t
  • 检测后退按钮但不关闭对话框片段

    我有一个浮动对话框的对话框片段 其中包括一个特殊的键盘 当用户在 EditText 字段内按下时会弹出该键盘 正常的 IME 停止显示 我希望当用户按下后退按钮 就像普通的 IME 服务一样 时键盘被关闭 可见性 GONE 但对话框保持可见
  • 为什么我收到手势识别器不能在原型对象上使用的信息?

    当我将 UITapGestureRecognizer 放入场景中 UITableViewCell 内的 UIView 内时 我从情节提要中收到上述错误 知道为什么我会收到此错误吗 我不确定为什么会出现这种限制 但我知道为什么您会收到错误消息
  • 向 Google 蜡烛图添加注释(发布的解决方案会触发 TypeError)

    我正在尝试向 Google Candlestick 图表添加一些注释 我注意到有人已经问过同样的问题 向 Google 烛台图表添加注释 用户Aper u回复了详细的解决方案来扩展图表并添加注释 因为图表没有内置任何此类功能 但是 当我尝试
  • PHP正则表达式检查英文名称

    寻找正则表达式来检查有效的英文名称 即 A Z a z space only 名字 可选 中间名 姓氏 一个可接受的例子 John von Neumann Thanks 编辑 添加检查代码 usr bin php
  • 如何在 c/c++ 中构建没有导入表的可执行文件?

    我找到了修复导入表的工具here 但是如果没有在 c c 中首先构建导入表 PE 是如何可执行的呢 只是不要使用 CRT 也不要使用任何导入的函数 pragma comment linker entry start int start re
  • findAndModify 或 findOneAndUpdate - “不是函数”

    首先 哪个最好 findAndModify or findOneAndUpdate or findByIdAndUpdate 就我而言 我有一张这样的表 seqkeys id invoice seq NumberInt 1 id recei
  • 在编译时获取`std::initializer_list`的大小

    我正在努力实施reshapefortran 与 C 11 14 的函数 我设计了一个函数 该函数接受两个std initializer list 首先initializer list给出我用来初始化的初始值D维数组 第二initialize
  • GCC 如何自动知道包含 glib 库?

    我用 C 语言编写了一个简单的程序 它使用glib h 但是当我编译它时 我收到如下错误 gcc test c o test test c 3 18 fatal error glib h No such file or directory
  • Facebook 成功登录后,ExternalLoginConfirmation 返回 null

    在MVC 5模板中实现Facebook登录 添加了应用程序ID和密码 最初登录失败 因为它返回 null public async Task
  • Twitter 的 Bootstrap typeahead 设置

    我用的是官方的推特上的例子 主要问题是 我可能不知道如何使用霍根怪物 JS端 search name typeahead name name remote url entities search autocomplete json quer
  • MVC 3 和 WebForms 可以在网站上共存吗?

    我目前有一个网站 其中有一个 WebForms 4 网站 该网站是 www mysite co uk 我目前正在使用 MVC 3 开发一个微型网站 我想将其上传到同一网站 但在不同的目录下 这可能吗 或者我需要创建一个新网站吗 是的 这是可
  • 如何使用运动布局缩放父视图内的textView?

    我正在尝试缩放容器视图内的 textView Activity 使用运动布局 如果我不将 textView 放置在容器内 我可以缩放它 这是我的活动布局和运动布局描述文件 如何使scaleX和scaleY工作 活动布局
  • 前置摄像头填充圆形 UIView

    在我正在开发的应用程序中 用户需要进行 自拍 是的 我知道 但该应用程序仅供私人使用 我已经让相机在圆形 UIView 区域中显示一切正常工作 但是我无法让它正确缩放并填充圆圈 这是它现在正在做的事情 这就是我想要它做的事情 这是我的 UI