J'essaie de faire une application de dessin simple pour l'iPhone. Tout a bien fonctionné, jusqu'à ce que je tente la mise en page.La vue UIImage n'a pas de hauteur entière avec autolayout, la ligne tracée devient floue
Mon Imageview doit avoir un rapport d'aspect fixe de 3: 4, en raison du format d'image de l'iPhone. Je l'ai également épinglé au top guide et aux côtés.
Les lignes que je dessine sont déformées, et «s'écoulent »
Plus je reçois à l'extrémité inférieure de la vue, plus la ligne est tirée vers le haut.
je l'ai lu quelque part que cela pourrait être causé par la vue de recevoir une hauteur qui n'est pas un entier après la mise en forme automatique, ce qui semble être vrai:
Je ne veux pas hardcode la rect pour chaque appareil iOS.
Comment puis-je "arrondir" ce 0.5 dans la taille?
Voici ma méthode de ligne de tirage:
func drawLineFrom(fromPoint: CGPoint, toPoint: CGPoint) {
// 1
UIGraphicsBeginImageContext(tempImageView.frame.size)
let context = UIGraphicsGetCurrentContext()
tempImageView.image?.drawInRect(CGRect(x: 0, y: 0, width: tempImageView.frame.size.width, height: tempImageView.frame.size.height))
// 2
CGContextMoveToPoint(context, fromPoint.x, fromPoint.y)
CGContextAddLineToPoint(context, toPoint.x, toPoint.y)
// 3
CGContextSetLineCap(context, CGLineCap.Round)
CGContextSetLineWidth(context, brushWidth)
CGContextSetRGBStrokeColor(context, red, green, blue, 1.0)
CGContextSetBlendMode(context, CGBlendMode.Normal)
// 4b
CGContextStrokePath(context)
// 5
tempImageView.image = UIGraphicsGetImageFromCurrentImageContext()
tempImageView.alpha = opacity
UIGraphicsEndImageContext()
}
je l'ai déjà essayé de changer de antialiasing, mais cela n'a pas aidé, il vient de faire paraître horrible.