Это два разных свойства в том, как они взаимодействуют с CALayer, поэтому я не рассматриваю их как взаимозаменяемые.
Когда вы изменяете преобразование в CALayer, вы берете базовый контент и геометрию этого слоя и преобразуете его таким образом, что вы можете масштабировать, поворачивать, применять перспективу или делать другие трехмерные эффекты. Все это аппаратно ускорено, потому что вы эффективно применяете матрицу преобразования OpenGL (ES) к двумерной прямоугольной текстуре CALayer. Обратите внимание, что применение преобразования не вызывает повторного рендеринга содержимого CALayer, поэтому вы можете получить размытую графику и текст, если масштабируете слой вверх или вниз.
Если вы изменяете границы CALayer, вы деформируете сам слой, непосредственно корректируя его геометрию. По умолчанию это аппаратное ускорение. Однако это может оказаться намного дороже, если вы установите для свойства needsDisplayOnBoundsChange
CALayer значение YES. В этом случае слой будет перерисован с новым размером, если вы измените его границы, что может быть медленной операцией. Вы бы использовали эту опцию, если вы хотите, чтобы в конце действия по изменению размера была четкая графика, а преобразование этого не даст.
В итоге, хотя масштабирование преобразований и изменений границ по умолчанию может быть примерно одинаковым с точки зрения производительности, последнее можно сделать намного медленнее с правильными настройками. В общем, я рекомендую манипулировать геометрией слоя напрямую, если вы хотите переместить его или изменить его размер и оставить его там, с преобразованиями, зарезервированными для быстрой анимации, такой как отскоки, встряски или всплывающие окна, или для приложения более продвинутых манипуляций, таких как эффекты перспективы.