简体   繁体   English

如何在 Swift 的 UIImageView 中添加文本?

[英]How to add the text in UIImageView in Swift?

I have some issues for editing UIImageView.我在编辑 UIImageView 时遇到了一些问题。 User can enter the text in imageview then it processes to save it and after that user can view this image with the text .用户可以在 imageview 中输入文本,然后处理保存它,然后用户可以查看带有文本的图像。

How can I do this?我怎样才能做到这一点?

I tried and got the solution for adding the text inside the UIImageview.Below is the coding我尝试并得到了在 UIImageview.Below 中添加文本的解决方案是编码

import UIKit

class ViewController: UIViewController,UINavigationControllerDelegate, UIImagePickerControllerDelegate,UIGestureRecognizerDelegate{

@IBOutlet var imageViewText: UIImageView!
var dynamicTextViewInsideImageView : UITextView!
var strImageSelected : String!
var picker = UIImagePickerController()
var xValue = CGFloat()
var yValue = CGFloat()
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    imageViewText.layer.cornerRadius = 5
    imageViewText.layer.borderColor = UIColor.blueColor().CGColor
    imageViewText.layer.borderWidth = 1
    strImageSelected = ""
}

override func viewWillAppear(animated: Bool)
{
    let tapRecognizer = UITapGestureRecognizer(target: self, action: Selector("imageTapped:"))
    //Add the recognizer to your view.
    imageViewText.userInteractionEnabled = true
    tapRecognizer.numberOfTapsRequired = 1
    imageViewText.addGestureRecognizer(tapRecognizer)
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func actionPickImage(sender: AnyObject)
{
    var alert:UIAlertController=UIAlertController(title: "Choose Image", message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet)
    var cameraAction = UIAlertAction(title: "Camera", style: UIAlertActionStyle.Default)
        {
            UIAlertAction in
            self.openCamera()
    }
    var gallaryAction = UIAlertAction(title: "Gallary", style: UIAlertActionStyle.Default)
        {
            UIAlertAction in
            self.openGallary()
    }
    var cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel)
        {
            UIAlertAction in
    }

    // Add the actions
    picker.delegate = self
    alert.addAction(cameraAction)
    alert.addAction(gallaryAction)
    alert.addAction(cancelAction)
    self.presentViewController(alert, animated: true, completion: nil)

}


func openCamera()
{
    if(UIImagePickerController .isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera))
    {
        picker.sourceType = UIImagePickerControllerSourceType.Camera
        self .presentViewController(picker, animated: true, completion: nil)
    }
    else
    {
        let alertWarning = UIAlertView(title:"Warning", message: "You don't have camera", delegate:nil, cancelButtonTitle:"OK", otherButtonTitles:"")
        alertWarning.show()
    }
}
func openGallary()
{
    picker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
    self.presentViewController(picker, animated: true, completion: nil)
}

//PickerView Delegate Methods
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject])
{
    picker .dismissViewControllerAnimated(true, completion: nil)
    imageViewText.image=info[UIImagePickerControllerOriginalImage] as? UIImage
    strImageSelected = "ImagePicked"
}
func imagePickerControllerDidCancel(picker: UIImagePickerController)
{
    println("picker cancel.")
    strImageSelected = ""
}
//On the imageView you can add text(Only after you picked the image from Gallery or Camera) 
func imageTapped(gestureRecognizer: UITapGestureRecognizer)
{
    if strImageSelected.isEmpty{
       println("Do not add the textview inside imageview as you have not picked the image from gallery or camera")
    }
    else
    {
         println("you picked the image successfully")
        dynamicTextViewInsideImageView = UITextView(frame: CGRectMake(xValue,yValue,200,50))
        dynamicTextViewInsideImageView.backgroundColor = UIColor( red: 0.9, green: 0.9, blue:0.9, alpha: 1.0 )
        imageViewText.addSubview( dynamicTextViewInsideImageView)
    }

}
//TouchEvent for Getting X,Y position once we touch inside the imageview
override func  touchesBegan(touches: NSSet, withEvent event: UIEvent)
{
    if let touch = touches.anyObject() as? UITouch
    {
      let location = touch.locationInView(imageViewText) as CGPoint
      println("the location.x is - \(location.x)")
      println("the location.y is - \(location.y)")
      xValue = location.x
      yValue = location.y
      println("the xValue is - \(xValue)")
      println("the yValue is - \(yValue)")
    }

}
}

Try the following尝试以下

func waterMarkedImage(waterMarkText:String, corner:WaterMarkCorner = .BottomRight, margin:CGPoint = CGPoint(x: 20, y: 20), waterMarkTextColor:UIColor = UIColor.whiteColor(), waterMarkTextFont:UIFont = UIFont.systemFontOfSize(20), backgroundColor:UIColor = UIColor.clearColor()) -> UIImage{

    let textAttributes = [NSForegroundColorAttributeName:waterMarkTextColor, NSFontAttributeName:waterMarkTextFont]
    let textSize = NSString(string: waterMarkText).sizeWithAttributes(textAttributes)
    var textFrame = CGRectMake(0, 0, textSize.width, textSize.height)

    print(textSize.height)

    var imageSize = self.size
    imageSize = CGSize(width: imageSize.width, height: (imageSize.height+textSize.height))
    switch corner{
    case .TopLeft:
        textFrame.origin = margin
    case .TopRight:
        textFrame.origin = CGPoint(x: imageSize.width - textSize.width - margin.x, y: margin.y)
    case .BottomLeft:
        textFrame.origin = CGPoint(x: margin.x, y: imageSize.height - textSize.height - margin.y)
    case .BottomRight:
        textFrame.origin = CGPoint(x: imageSize.width - textSize.width - margin.x, y: imageSize.height - textSize.height - margin.y)
    case .Center:
        textFrame.origin = CGPoint(x: imageSize.width/2 - textSize.width/2, y: imageSize.height - textSize.height - margin.y)
    }

    /// Start creating the image with water mark
    //imageSize = CGSize(width: (imageSize.width+textSize.width), height: (imageSize.height+textSize.height))
    UIGraphicsBeginImageContext(imageSize)
    self.drawInRect(CGRectMake(0, 0, imageSize.width, imageSize.height - textSize.height))
    NSString(string: waterMarkText).drawInRect(textFrame, withAttributes: textAttributes)

    let waterMarkedImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return waterMarkedImage
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM