Maskstobounds против clipstobounds [дубликат]

этот вопрос уже есть ответ здесь:

в моей точке обоих clipstobounds и maskstobounds делает ту же работу.

Я не мог найти никакой разницы между их.

кто-нибудь любезно объяснит, как оба разные.

2 ответов


masksToBounds

любые подслои слоя, которые выходят за его границы, будут обрезаны до этих границ. Подумайте о слое, в этом случае, как о окне на его подслоях; ничего за пределами краев окна не будет видно. Когда masksToBounds нет, нет отсечки.

когда значение этого свойства равно true, Core Animation создает неявную маску отсечения, которая соответствует границам слоя и включает любые эффекты радиуса угла. Если также указано значение свойства mask, две маски умножаются для получения конечного значения маски.

вы можете получить больше информации в ссылка на API.

clipToBounds

вариант использования для clipsToBounds больше для подвидов, которые частично находятся вне основного вида. Например, у меня есть (круговое) подвидение на краю его родительского (прямоугольного) UIView. Если вы установите clipsToBounds в YES, будет показана только половина круга / подвида. Если установлено значение нет, появится весь круг. Просто столкнулся с этим так хотел поделиться

для получения дополнительной информации пример ссылки


Clipstobounds : если для clipsToBounds установлено значение YES, я буду видеть только ту часть подвида, которая соответствует границам супервизора. В противном случае, если clipsToBounds установлен в NO, я увижу весь подзор, даже части вне супервизора

Maskstobounds: Если свойству masksToBounds присвоено значение YES, все подслои слоя, выходящие за его границы, будут обрезаны до этих границ. Подумайте о слое, в этом случае, как о окно на его подслои; ничего за пределами краев окна не будет видно. Когда masksToBounds нет, отсечение не происходит, и любые подслои, которые выходят за пределы границ слоя, будут видны полностью (если они не выходят за пределы любого суперслоя, у которого включена маскировка).