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

我有一些编辑UIImageView的问题。 用户可以在imageview中input文字,然后进行保存,之后用户可以用文字查看图像。

我怎样才能做到这一点?

尝试以下

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 } 

我试过,并得到了解决scheme添加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)") } } }