2016-02-15 4 views
1

Je travaille sur le projet où j'ai besoin d'ajouter le texte à l'image qui vient du champ de texte. Mais quand je vois le texte sur l'image, il montre la taille de la police plus petite que la taille de police du champ de texte.La taille du texte n'est pas identique quand dessiner le texte sur l'image d'UI

J'utilise la méthode suivante pour dessiner le texte sur l'image

func drawText(text: String, inImage image: UIImage, atPoint point: CGPoint, fontName:String, fontSize: String,textColor: UIColor) -> UIImage? { 

     UIGraphicsBeginImageContextWithOptions(image.size, true, UIScreen.mainScreen().scale) 
     UIGraphicsBeginImageContext(image.size) 

     image.drawInRect(CGRectMake(0, 0, image.size.width, image.size.height)) 
     let rect: CGRect = CGRectMake(point.x, point.y, image.size.width, image.size.height) 
     // UIColor.whiteColor().set() 

     // set the font to Helvetica Neue 18 
     if let sizeFont = NSNumberFormatter().numberFromString(fontSize) { 

      // TODO: - Need to resolve issue 
      let originalSize = sizeFont.integerValue 

      let finalFontSize = CGFloat(originalSize) 

      let fieldFont = UIFont(name: fontName, size:finalFontSize*1.5) 

      // set the line spacing to 6 
      let paraStyle = NSMutableParagraphStyle() 
      // paraStyle.lineSpacing = 6.0 

      // set the Obliqueness to 0.1 
      // let skew = 0.1 

      let attributes: NSDictionary = [ 
       NSForegroundColorAttributeName: textColor, 
       // NSParagraphStyleAttributeName: paraStyle, 
       // NSObliquenessAttributeName: skew, 
       NSFontAttributeName: fieldFont! 
      ] 

      NSString(string: text).drawInRect(rect, withAttributes: attributes as? [String : AnyObject]) 

      let newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext() 
      UIGraphicsEndImageContext() 
      return newImage 
     } 

     return nil 
    } 

et la taille de la police pourrait être 16-60px.

S'il vous plaît laissez-moi savoir quelle pourrait être la solution.

Merci

+0

Je vous demande de poster un code, aussi quelle taille de police vous voulez, –

+0

J'ai le même problème. Avez-vous trouvé une solution? –

Répondre

3

Tout semble aller bien avec votre code.
Un problème possible est que vous ne voyez pas l'image en taille réelle à l'intérieur de votre ImageView car elle est mise à l'échelle, de sorte que vous voyez la police plus petite que ce que vous voulez.
Vous pouvez redimensionner l'image avant de dessiner le texte pour l'adapter au contenant sur lequel elle sera affichée. Ou vous pouvez calculer le fontSize multipliant par 1/scale, avec
scale = the scale at will the image will be shown
Par exemple, si l'image est plus grand que plus grand et le récipient (le imageView) est inférieure à l'échelle de l'image sera image.size.height/imageView.frame.size.height.
Je pense que cela pourrait résoudre votre problème.

+0

Merci Cela a fonctionné. –