iOS: convertRect: toView: не работает должным образом - PullRequest
7 голосов
/ 07 июня 2011

Я хотел бы иметь координаты относительно главного окна, поэтому я использую convertRect: toView: с nil в качестве второго параметра:

CGRect result = [self.view convertRect:addToList.frame toView:nil];

Но в результате я всегда получаю

NSRect: {{5, 30}, {35, 35}}

и это именно те значения, которые я использую для генерации addToList-view:

addToList = [UIButton buttonWithType:UIButtonTypeCustom];
addToList.frame = CGRectMake(5.0f, 30.0f, 35.0f, 35.0f);

Если я добавлю кнопку addToList к представлению, которое находится в правом нижнем углу экрана, я ожидаю CGRect, например, 950, 700, 35, 35 на ландшафте iPad, поскольку координаты кнопки относительно самого верхнего вида.

Сначала я сделал преобразование в initWithFrame: -метод UIViewController; но теперь я делаю это потом ... чего мне не хватает?

Спасибо!

РЕДАКТИРОВАТЬ: важно ли, чтобы "self.view" находилось внутри UIScrollView?

1 Ответ

6 голосов
/ 07 июня 2011

Если вы посмотрите документацию convertRect:toView:, вы увидите, что передаваемый вами прямоугольник определен в границах представления, для которого вы вызываете метод.Поскольку self.view предположительно занимает все окно, прямоугольник не изменяется относительно окна.Вы должны отправить сообщение родителю кнопки, чтобы узнать фактическое расположение кнопки в окне.

...