Пейзажный режим UIView.center дает координаты портретного режима - PullRequest
1 голос
/ 18 ноября 2011

У меня есть приложение, оно работает в ландшафтном режиме, я держу его в ландшафтном режиме при отладке на телефоне.Я выбираю значение центра из UIView на моем главном контроллере вида, мне нужно это, чтобы поместить элементы в центр экрана, и, поскольку оно универсально, мне нужно, чтобы оно было переменным и не устанавливалось на размеры экрана iPhone.

Когда я делаю это и читаю x и y из CGPoint, возвращаемого view.center, я получаю x = 170 y = 240

Делегат - это единственный viewcontroller в моем приложении, функция center - однаобъекта, который я хочу переместить в центр.

- (void) center
{
    CGPoint center = ((UIViewController*)delegate).view.center;
    CGSize size = self.frame.size;
    double x = center.x - size.width/2 - location.x;
    double y = center.y - size.height/2 - location.y;

    [self _move:1.0 curve:UIViewAnimationCurveEaseInOut x:x y:y];
}

- (void)_move: (NSTimeInterval)duration
            curve:(int)curve x:(CGFloat)x y:(CGFloat)y
{
    // Setup the animation
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:duration];
    [UIView setAnimationCurve:curve];
    [UIView setAnimationBeginsFromCurrentState:YES];

    // The transform matrix
    CGAffineTransform transform = CGAffineTransformMakeTranslation(x, y);
    self.transform = transform;

    // Commit the changes
    [UIView commitAnimations];

}

Теперь для меня это не имеет особого смысла.

1 Ответ

6 голосов
/ 18 ноября 2011

Используйте границы, а не рамки. Кадр находится в системе координат суперпредставления, которая для вашего корневого представления является окном - оно не вращается в разных ориентациях.

Границы находятся в собственной системе координат представлений, поэтому это подходящий прямоугольник для использования при установке центра для подпредставлений, поскольку центр также выражается в системе координат суперпредставления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...