Отрицательные координаты в UIView.frame - PullRequest
0 голосов
/ 16 февраля 2012

У меня есть UIView с рамкой: CGRectMake (0,0,1024,768);

И я хочу установить (0,0) точку этого подпредставления в (0, 512);

Я пытался:

CGRect fr = self.frame;
fr.origin.x = self.bounds.size.width / 2;
self.frame = fr;

Кажется, все в порядке, но отрицательные координаты не работают.Я хочу x от -512 до 512.

Что я должен сделать, чтобы сработали отрицательные координаты?

Ответы [ 3 ]

1 голос
/ 16 февраля 2012

Я понимаю, что вы хотите преобразовать фрейм вашего вида в CGRectMake(-512,0,1024,768)

В этом случае сделайте

fr.origin.x = - self.bounds.size.width / 2;

вместо

fr.origin.x = self.bounds.size.width / 2;

Вы можете использовать следующее, чтобы получить тот же результат:

self.frame = CGRectInset(self.frame, -CGRectGetMidX(self.frame), 0);    

Если это не то, что вы ищете, уточните свой вопрос.

Редактировать

После разъяснения, я думаю, что единственный способ достичь этого - это иметь родительское представление с координатами CGRectMake (512,0,1024,768) и с clipsToBounds = NO.Затем добавьте представление к этому родительскому представлению в кадре CGRectMake (-512,0,1024,768).

UIView *parentView = [[UIView alloc] initWithFrame:CGRectMake(512,0,1024,768)];
parentView.clipsToBounds = NO;
[originalParentView addSubview:parentView]; // or controller.view = parentView;

[parentView addSubview:view];
view.frame = CGRectMake(-512,0,1024,768);
0 голосов
/ 16 февраля 2012

Не совсем точно, что вы пытаетесь сделать. Ничто здесь не должно создавать отрицательное число.

Посмотрите, помогут ли эти идеи:

  1. Когда вы делите число с плавающей запятой, используйте 2.0f, а не только 2.

    fr.origin.x = self.bounds.size.width / 2.0f;

  2. Может быть, было бы проще подумать о том, где вы хотите расположить центр обзора.

    self.center = CGPointMake (0.0f, 512.0f);

0 голосов
/ 16 февраля 2012

Попробуйте CGRectMake(0.0f, 0.0f, 1024.0f, 768.0f) вместо того, что вы используете в настоящее время.

Затем вы захотите сделать следующее.

CGRect frame = self.view.frame;
frame.origin.x = self.bounds.size.width / 2.0f;
self.view.frame = frame;

Попробуйте это.

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