Путать с координатой "CGRectMake" - PullRequest
0 голосов
/ 01 марта 2012

Из следующего кода

// yPos = 0, width = 100, height = 150
[imagesMutable enumerateObjectsUsingBlock: ^(UIScrollView verticalScroll, NSUInteger idx, BOOL *stop){
  [verticalScroll addSubView:[UIImageView setFrame:CGRectMake(0, yPos, width, height)]]
  // some code
  yPos += (height + 15)
}];

Скажем, если у imagesMutable есть 3 объекта. И как я где-то читал, что CGRectMake использует декартову координату (x = 0, y = 0 будет слева внизу). Итак, должно быть

[verticalScroll addSubView:[UIImageView setFrame:CGRectMake(0, 0, 100, 150)]]
[verticalScroll addSubView:[UIImageView setFrame:CGRectMake(0, 165, 100, 150)]]
[verticalScroll addSubView:[UIImageView setFrame:CGRectMake(0, 330, 100, 150)]]

Это должно означать, что

First CGRectMake should has bottom left at (0, 0) and top right at (100, 150)
Second CGRectMake should has bottom left at (0, 165) and top right at (100, 315) 
Third CGRectMake should has bottom left at (0, 330) and top right at (100, 480)

Тогда порядок изображений сверху вниз должен быть 3 -> 2 -> 1 по сравнению с порядком объектов объектов imagesMutable (1 -> 2 -> 3)

Но почему, он появляется в порядке 1 -> 2 -> 3 так же, как порядок объектов imagesMutable при запуске приложения? Я что-то упустил?

1 Ответ

33 голосов
/ 01 марта 2012

(0,0) - это не нижний левый угол, а верхний левый.

Вид имеет инвертированные координаты y, так что y увеличивается при перемещении вниз по экрану.

enter image description here

...