Sto provando a realizzare un'app di disegno semplice per l'iPhone. Tutto ha funzionato bene, fino a quando ho provato il layout.La vista di UIImage non ha altezza intera con autolayout, la linea disegnata diventa sfocata
La mia vista immagine dovrebbe avere una proporzione fissa di 3: 4, a causa del formato di immagine iPhone. L'ho anche attaccato alla guida di layout superiore e ai lati.
Le linee che disegno vengono distorti, e "scorrono via"
Più mi avvicino alla fine inferiore della vista, tanto più la linea viene tirato verso l'alto.
ho letto da qualche parte che potrebbe essere causato dalla vista che riceve un'altezza che non è un numero intero dopo il layout automatico, che sembra essere vero:
Non voglio hardcoded il retto per ogni dispositivo iOS.
Come posso "arrotondare" questo 0.5 nell'altezza?
Ecco il mio metodo draw line:
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()
}
Ho già provato a cambiare di antialiasing, ma che non ha aiutato, ha appena fatto sembrare orribile.