2010-12-17 11 views
48

Ich habe eine UIView, die als Unteransicht in einem UIScrollView platziert wird. Ich habe mehrere untergeordnete Ansichten, die aus Bildern, Text und Schaltflächen in der UIView bestehen. Um eine ordentliche Scrollleistung zu erhalten, setze ich shouldRasterize = YES auf die Ebene in der UIView. Dies funktionierte großartig, da die Leistung gesteigert wurde, so dass ich reibungslos scrollen kann und kein Problem darstellt, da meine Grafiken nach dem Zeichnen statisch sind. Das Problem ist jedoch, dass, wenn ich shouldRasterize eingestellt habe, die gerasterten Grafiken verschwommen sind und eine niedrige Auflösung auf einem Retina-Display haben. Gibt es eine Möglichkeit, hochauflösende Grafiken zu erhalten, die für die Leistung gerastert werden?Leistung Scroll-und Retina-Auflösung Bilder in CALayer

Antwort

120

Scheint, ich musste rasterizationScale auf den richtigen Wert für das Gerät wie folgt setzen.

myView.layer.rasterizationScale = [[UIScreen mainScreen] scale]; 
+1

Muss die übergeordnete Ebene auch die gleiche rasterizationScale verwenden oder spielt das keine Rolle? – Crashalot

0

Ich hatte ein ähnliches problem-- eine gedrehte UIView mit mehreren UIImageView Subviews. Als ich die rasterizationScale = 2.0 einstellte, wurden die Bilder schärfer, aber dies verursachte Zerrissenheit, um wieder aufzutauchen. Um dies zu beheben, habe ich ein containerView, die die UIView und UIIMageView s gehalten (die zuvor Subviews des UIView war) und angewandten rasterizationScale = 1.0 zum UIView und rasterizationScale = 2.0 die UIImageView s. Jetzt sieht alles ganz nett aus.

+1

Ich schlage vor, die viel einfachere Lösung von timeuser zu verwenden. – mbinna