MST

星途 面试题库

面试题:Swift中如何使用Core Graphics绘制一个简单的圆形并应用图像处理效果

请用Swift代码实现使用Core Graphics框架绘制一个半径为50,圆心在(100, 100)位置的圆形,并且给这个圆形应用一个模糊的图像处理效果。描述实现步骤并写出关键代码。
26.5万 热度难度
编程语言Swift

知识考点

AI 面试

面试题答案

一键面试

实现步骤

  1. 创建一个继承自 UIView 的自定义视图,用于绘制圆形。
  2. 在自定义视图的 draw(_:) 方法中,使用 Core Graphics 绘制圆形。
  3. 绘制完成后,获取绘制的图像,并应用模糊效果。
  4. 将应用模糊效果后的图像绘制回视图。

关键代码

import UIKit

class BlurredCircleView: UIView {
    override func draw(_ rect: CGRect) {
        // 获取当前上下文
        guard let context = UIGraphicsGetCurrentContext() else { return }
        
        // 设置圆心和半径
        let center = CGPoint(x: 100, y: 100)
        let radius: CGFloat = 50
        
        // 绘制圆形
        context.addArc(center: center, radius: radius, startAngle: 0, endAngle: .pi * 2, clockwise: true)
        context.setFillColor(UIColor.blue.cgColor)
        context.fillPath()
        
        // 获取绘制的图像
        guard let image = UIGraphicsGetImageFromCurrentImageContext() else { return }
        
        // 应用模糊效果
        let filter = CIFilter(name: "CIGaussianBlur")!
        filter.setValue(CIImage(image: image), forKey: kCIInputImageKey)
        filter.setValue(10, forKey: kCIInputRadiusKey)
        guard let outputImage = filter.outputImage else { return }
        let blurredImage = UIImage(ciImage: outputImage)
        
        // 清除当前上下文
        context.clear(rect)
        
        // 将模糊后的图像绘制回视图
        blurredImage.draw(in: rect)
    }
}

使用示例

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let blurredCircleView = BlurredCircleView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
        blurredCircleView.center = view.center
        view.addSubview(blurredCircleView)
    }
}