CALayer — тень

Предыдущая часть CALayer — закругление углов, выделение границы

В этой части мы сделаем тень у кнопки и закруглим ее углы.

CALayer_proSwift_ru_x7g37

Тень

У нас остался последний элемент — кнопка. И у нее мы закруглим углы и сделаем от нее тень.  Доступ к кнопке у нас есть из  ViewController в котором мы делали outlet. Я к outlet добавил еще Action, чтобы обработать нажать на кнопку. По нажатия будет меняется форма тени.  Также для этого переключения я добавил свойство класса shadowSwitch, чтобы отслеживать текущее положение тени. Мой класс  ViewController выглядит следующим образом:

С кнопкой мы также как и с LogoView будем работать с уже существующим слоем, к которому получим доступ через свойство .layer.

Добавьте код в метод  viewDidLoad()

Радиус закругления составил половину высоты кнопки. Это дало нам красивую кругленную оранжевую кнопку.

CALayer_proSwift_ru_aihm1

Добавим тень. Для этого нужно задать радиус тени — по сути размер тени относительно объекта, интенсивность тени — т.е. прозрачность, и сдвиг тени — ее направление относительно объекта. Кстати методом обработки нажатия кнопки я как раз и буду мнется это сдвиг и можно наглядно посмотреть как это значение влияет на положение тени.

CALayer_proSwift_ru_phjpq

Тень появилась вокруг кнопки со всех сторон, потому что свойству orangeButton.layer.shadowOffset, т.е. сдвигу тени  мы присвоили значение CGSize.zero. Т.е. тень не сдвигается относительно объекта. Добавим логики в обработку нажатия кнопки…

… и получим следующий результат:UINavigationBar_hide_1_proSwift_ru

CALayer_proSwift_ru_x7g37

При нажатии меняется shadowOffset и тень сдвигается вправо-вниз на размеры переданные в это свойство CGSize(width: 4.0, height: 4.0)

Ссылка проекта на Github

https://github.com/Ironrnd/CALayer_proSwift_ru

Метки:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*