To rozwiązanie jest trochę szalone, ale ma sens logiczny i ma świetny efekt wizualny. Pracuję z NSLayoutManager
i kilkoma NSTextContainer
s, układając tekst w dwóch kolumnach. Ponieważ używam wielu kontenerów tekstowych (i nie jestem pewien, czy chcę mieć numer UITextView
), nadpisuję metodę draw(rect: CGRect)
pod numerem MyDrawingView: UIView
.
Problem polega na tym, że użycie self.contentMode = .redraw
nadal powoduje niewielkie rozciąganie przy obrocie - na tyle duże, że może być wyłącznikiem.
Zauważyłem, że ustawienie contentMode = .left
lub nawet contentMode = .scaleAspectFit
było bliskie temu, co chciałem, pod względem perfekcyjnego pod względem pikseli obrotu. Ale oczywiście nie dostałem wezwania do remisu, którego potrzebowałem.
Przesunięcie layoutSubviews()
, przełączenie contentMode
na .scaleAspectFit
, o nazwie super.layoutSubviews()
, a następnie ponownie go włączyłem. : P
override func layoutSubviews() {
self.contentMode = .scaleAspectFit
super.layoutSubviews()
self.contentMode = .redraw
}
Jest ... idealny.
Próbowałem dokładnie to zrobić. Bez efektu. Nuthin. W podklasie I overrode setTransform: Metoda wygląda następująco: - (void) setTransform (CGAffineTransform) nowaWartość { [bardzo setTransform: nowaWartość]; [self setNeedsDisplay]; } – dugla
Wygląda na to, że bitowanie w kodzie ma teraz ustawioną właściwość setNeedsDisplay. – dugla