Другие ответы не совсем объясняют, что происходит здесь, поэтому это основная проблема:
Когда вы пишете blackKey.center.x, blackKey.center и center.x оба выглядят как доступ к элементам структуры, но на самом деле они совершенно разные вещи. blackKey.center - это доступ к свойствам, который desugars для чего-то вроде [blackKey center], который в свою очередь desugars к чему-то вроде objc_msgSend(blackKey, @selector(center)). Вы не можете изменить возвращаемое значение функции, например objc_msgSend(blackKey, @selector(center)).x = 2 - это просто не имеет смысла, потому что возвращаемое значение не сохраняется в любом месте значимым.
Итак, если вы хотите изменить структуру, вы должны сохранить возвращаемое значение свойства в переменной, изменить переменную, а затем установить свойство в новое значение.
Ответ 2
Вы не можете напрямую изменить значение x a CGPoint (или любое значение struct), подобное этому, если оно является свойством объекта. Сделайте что-то вроде следующего.