swift - 如何在swift中调用piccure边框的扩展文件

标签 swift uiimageview swift3 border layer

我下面的代码应该为拍摄的照片提供可定制的边框。我最初有一个边框,但它不可定制。我在网上看到了这段关于扩展文件(CALAYER)中可自定义边框的代码。显然对我来说,我必须在类文件(x1ViewController)中调用 CALYAER 函数才能显示边框,我只是不知道该怎么做。

import UIKit

extension CALayer {
func addBorder(edge: UIRectEdge, color: UIColor, thickness: CGFloat) {

    let border = CALayer();

    switch edge {
    case UIRectEdge.top:
        border.frame = CGRect(x: 0, y: 0, width: self.frame.width, height: thickness)
        break
    case UIRectEdge.bottom:
        border.frame = CGRect(x:0, y:self.frame.height - thickness, width:self.frame.width, height:thickness)
        break
    case UIRectEdge.left:
        border.frame = CGRect(x:0, y:0, width: thickness, height: self.frame.height)
        break
    case UIRectEdge.right:
        border.frame = CGRect(x:self.frame.width - thickness, y: 0, width: thickness, height:self.frame.height)
        break
    default:
        break
    }

    border.backgroundColor = color.cgColor;

    self.addSublayer(border)
}


}



class x1ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UITextFieldDelegate {



@IBOutlet weak var imageDisplay: UIImageView!
     var screenView: UIImageView!







@IBAction func camera(_ sender: AnyObject) {
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera){
        let imagePicker = UIImagePickerController()
        imagePicker.delegate = self







       // imageDisplay.layer.borderColor = UIColor(red: 0, green: 1.0, blue: 0, alpha: 1).cgColor
        //imageDisplay.layer.cornerRadius = 1
       // imageDisplay.contentMode = .scaleAspectFit
       // imageDisplay.layer.borderWidth = 1


        imagePicker.sourceType = UIImagePickerControllerSourceType.camera;
        imagePicker.allowsEditing = false
        self.present(imagePicker, animated: true, completion: nil)}}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject: AnyObject]!){
    imageDisplay.image = image
    self.dismiss(animated: true, completion: nil);
    screenView = UIImageView()

    screenView.frame = CGRect(x:0, y: 0, width: self.view.frame.width, height: self.view.frame.height)




    let text = "#HAPPY"
    let label = UILabel(frame: CGRect(x: 125, y: 700, width: self.view.frame.width, height: 300))
    label.font = UIFont(name: label.font.fontName, size: 122)

    label.textColor = UIColor.blue
    label.alpha = 1.0
    label.text = text


    self.view.addSubview(screenView)
    self.view.addSubview(label)


    UIGraphicsBeginImageContext(self.imageDisplay.frame.size)
    self.view.drawHierarchy(in: self.view.frame, afterScreenUpdates: true)

}
@IBAction func save(_ sender: AnyObject) {

    let alert = UIAlertController(title: "Image Saved", message: "Image is in photo gallery", preferredStyle: .alert)
    let okay = UIAlertAction(title: "OK", style: .default, handler: nil)
    alert.addAction(okay)
    present(alert, animated: true, completion: nil)



    let photo = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    UIImageWriteToSavedPhotosAlbum(photo!, nil, nil, nil)

}


}

最佳答案

该扩展将该方法添加到 CALayer 中。您可以使用 View 的 layer 属性来访问 View 的图层。

myView.layer.addBorder(/* 你的参数*/)

关于swift - 如何在swift中调用piccure边框的扩展文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40984598/

相关文章:

iOS SWIFT - WebRTC 从前置摄像头更改为后置摄像头

ios - UIPicker,2 列,更新第二个组件

ios - UIImageView 上的 SizeToFit 不起作用

objective-c - 如何停止 UIView 动画

swift - 从选择器调用协议(protocol)扩展函数

swift - 完成处理程序

swift - 使用 Combine 框架的按钮操作

swift - MailCore2 的电子邮件帐户

swift - 如何在 Swift 中使用 Alamofireimage 在 Collection View 中下载图像并保持单元格中的图像高度?

ios - 在 Storyboard 中使用 AutoLayout 在 Table View Cell 中显示图像