Приложение «Мой iPhone» отображает колесо в портретном режиме:
Когда он поворачивается в ландшафтный режим, он увеличивает верхний сектор этого колеса:
Способ, которым я делаю это, - создать UIView (границы: 768 x 768) для размещения колеса, затем:
- (void) layoutSubviews
{
UIDeviceOrientation O = [UIDevice currentDevice].orientation;
:
[self repositionWheelTo: O];
}
- (void) repositionWheelTo: (UIDeviceOrientation) O
{
BOOL is_L = UIInterfaceOrientationIsLandscape( O );
CGPoint centerPoint = CGPointFromPoint2D( centreOfRect( self.bounds ) );
float sc = 320.0 / 768.0;
if( ! isIPad() && is_L )
{
centerPoint.y += 200;
sc *= 2.0;
}
if( isIPad() )
sc = 1.0;
wvContainer.center = centerPoint;
wvContainer.transform = CGAffineTransformMakeScale( sc, sc );
}
Это означает, что теперь он правильно рисует, чтобы уместить все колесо прямо на экране iPad и iPhone-портрета, а на iPhone-альбоме он удваивается в размере.
Итак, в iPhone-портрете вы можете представить квадрат 768x768, который простирается вокруг экрана фактического устройства, и преобразование установлено таким образом, что кнопки рисуются только в средней его части.
Возможно, трата памяти, но сейчас я пытаюсь сохранить управляемость кода и не вижу лучшего способа сделать это, который позволил бы мне плавно переходить от портрета к пейзажу.
Проблема в том, что на iPhone-портрете это выглядит очень грязно. Сглаживание просто не работает правильно. Вы можете видеть эффект четкой лестницы на A в Am, который исчезает при повороте на ландшафт.
Как заставить рендеринг колеса с приемлемым качеством в портретном режиме?