Створіть простір на початку поля UITextField


149

Я хочу залишити трохи місця на початку UITextField, як і тут: Додайте ліву поле до UITextField

Але я не знаю, як це зробити зі Свіфтом.


ну, ви не можете підкласові швидкі об'єкти в Objective-C, але ви можете це зробити навпаки ... Тож я здогадуюсь, ви просто коригуєте відповідь і комбінуєте її з: developer.apple.com/library/prerelease/ ios / документація / Swift /…
Граді Гравець

1
Це, мабуть, не найкраще рішення, але ви можете зробити uiview * paddingView і зробити UITextField.leftView = paddingView. тому надайте поданню оббивки потрібну ширину.
ipalibowhyte

1
вид накладки буде просто ванільним UIView, який має ширину, яку ви хотіли б
Grady Player

Для Swift 5: textField.layoutMargins.left = 20
Олександр

Відповіді:


283

Це те, що я зараз використовую:

Швидкий 4.2

class TextField: UITextField {

    let padding = UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 5)

    override open func textRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.inset(by: padding)
    }

    override open func placeholderRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.inset(by: padding)
    }

    override open func editingRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.inset(by: padding)
    }
}

Швидкий 4

class TextField: UITextField {

    let padding = UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 5)

    override open func textRect(forBounds bounds: CGRect) -> CGRect {
        return UIEdgeInsetsInsetRect(bounds, padding)
    }

    override open func placeholderRect(forBounds bounds: CGRect) -> CGRect {
        return UIEdgeInsetsInsetRect(bounds, padding)
    }

    override open func editingRect(forBounds bounds: CGRect) -> CGRect {
        return UIEdgeInsetsInsetRect(bounds, padding)
    }
}

Швидкий 3:

class TextField: UITextField {

    let padding = UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 5)

    override func textRect(forBounds bounds: CGRect) -> CGRect {
        return UIEdgeInsetsInsetRect(bounds, padding)
    }

    override func placeholderRect(forBounds bounds: CGRect) -> CGRect {
        return UIEdgeInsetsInsetRect(bounds, padding)
    }

    override func editingRect(forBounds bounds: CGRect) -> CGRect {
        return UIEdgeInsetsInsetRect(bounds, padding)
    }
}

Я ніколи не встановлюю іншу підкладку, але ви можете підправити. Цей клас не піклується про rightView та leftView у текстовому полі. Якщо ви хочете, щоб це було правильно, ви можете використовувати щось на зразок (наприклад, в objc, і мені потрібен був тільки rightView:

- (CGRect)textRectForBounds:(CGRect)bounds {
    CGRect paddedRect = UIEdgeInsetsInsetRect(bounds, self.insets);

    if (self.rightViewMode == UITextFieldViewModeAlways || self.rightViewMode == UITextFieldViewModeUnlessEditing) {
        return [self adjustRectWithWidthRightView:paddedRect];
    }
    return paddedRect;
}

- (CGRect)placeholderRectForBounds:(CGRect)bounds {
    CGRect paddedRect = UIEdgeInsetsInsetRect(bounds, self.insets);

    if (self.rightViewMode == UITextFieldViewModeAlways || self.rightViewMode == UITextFieldViewModeUnlessEditing) {
        return [self adjustRectWithWidthRightView:paddedRect];
    }
    return paddedRect;
}

- (CGRect)editingRectForBounds:(CGRect)bounds {
    CGRect paddedRect = UIEdgeInsetsInsetRect(bounds, self.insets);

    if (self.rightViewMode == UITextFieldViewModeAlways || self.rightViewMode == UITextFieldViewModeWhileEditing) {
        return [self adjustRectWithWidthRightView:paddedRect];
    }
    return paddedRect;
}

- (CGRect)adjustRectWithWidthRightView:(CGRect)bounds {
    CGRect paddedRect = bounds;
    paddedRect.size.width -= CGRectGetWidth(self.rightView.frame);

    return paddedRect;
}

Чому ви подвоюєте верхню та ліву вставки під час обчислення ширини та висоти? Не треба цього робити. Ви повинні додати дві відповідні вставки разом і відняти загальну суму від початкових меж. Або просто відняти обидва в послідовності.
Еш

1
@ Mr.UB Перевірте, якою платформою є поточний пристрій, і на основі цього створіть різні накладки. stackoverflow.com/questions/4567728/… . Можливо, з чимось подібним
Хаагенті

Apple забезпечує еквівалент newBoundsметоду UIEdgeInsetsInsetRectфункцією. Замість цього return self.newBounds(bounds)ви можете використовувати return UIEdgeInsetsInsetRect(bounds, padding)та видалити newBoundsметод.
Мобільний

Якщо у вашому текстовому полі є кілька рядків, це робить текст-заповнювач центром і випереджає textAlignment = .left and contentVerticalAlignment = .top
Code Wiget

@Ryan Минув час, але UITextField - це однолінійний лише я думав. Тоді UITextView слід використовувати для багаторядкових.
Хаагенті

196

Якщо ви використовуєте розширення, не потрібно підклас UITextField, і нова функціональність стане доступною для будь-якого UITextField у вашому додатку:

extension UITextField {
    func setLeftPaddingPoints(_ amount:CGFloat){
        let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: amount, height: self.frame.size.height))
        self.leftView = paddingView
        self.leftViewMode = .always
    }
    func setRightPaddingPoints(_ amount:CGFloat) {
        let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: amount, height: self.frame.size.height))
        self.rightView = paddingView
        self.rightViewMode = .always
    }
}

Коли мені потрібно встановити прокладку текстового поля де-небудь у моїй програмі, я просто виконую наступне:

    textField.setLeftPaddingPoints(10)
    textField.setRightPaddingPoints(10)

Використовуючи розширення Swift, функціональність додається до UITextField безпосередньо без підкласифікації.

Сподіваюся, це допомагає!


8
Відмінне рішення, дуже елегантний. Єдина зміна, яку я вніс, - це те, що я додав їх до однієї функції, тому я отримав щось на зразок textField.setPaddingFor (зліва: 10, право: 10). Обидва парами, необов’язкові, отже, якщо ви пройдете
нульову накладку,

4
Чудово! Але якщо ви встановите textField.clearButtonMode = .always, вам потрібно встановити лише ліву підкладку. Права накладка перемістить кнопку очищення вправо.
Пітер Крейнц

2
Одне спостереження. Це більше схоже на провідні / задні підкладки. Але, дивно, що він відповідає на вирівнювання тексту в текстовому полі !! не напрямок мови програми.
хасан

як встановити в UILabel?
Невинний

Чудово! Працює як для основного тексту, так і для заповнювача.
Акаш Bhardwaj

70

X, Y, Z - бажані значення

textField.layer.sublayerTransform = CATransform3DMakeTranslation(x, y, z)

10
Здається, це не працює з textField.clearButtonMode = UITextFieldViewMode.Always - кнопка очищення також переміщена вправо
CaptainProton

1
Не працює, коли потрібно відобразити кнопку «Очистити» ... також переміщується кнопка «Очистити».
xdev

Цей анвер короткий, але не повний і може вийти пізніше. @ Адріан у вас є чудовий момент, але це не спосіб. Причина, що ви робите це з підкласом, - це для всіх кращих випадків. Цей код, ймовірно, вийде з ладу перед рішенням підкласу. Але ви праві, що не слід писати код, який не є строго необхідним, і його можна надати, використовуючи дані бібліотеки, але ви також не повинні зловживати стандартними бібліотеками
Haagenti

Вері круто! Thnx!
Бухарін

46

Такий запас може бути досягнутий шляхом встановлення leftView/ rightViewдо UITextField.

Оновлено для Swift 4

// Create a padding view for padding on left
textField.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 15, height: textField.frame.height))
textField.leftViewMode = .always

// Create a padding view for padding on right
textField.rightView = UIView(frame: CGRect(x: 0, y: 0, width: 15, height: textField.frame.height))
textField.rightViewMode = .always

Я щойно додав / розмістив UIView ліву та праву частину текстового поля. Тож тепер друк почнеться після перегляду.

Дякую

Сподіваюся, що це допомогло ...


1
якщо комусь потрібен "об'єктивний c" тут код, UIView * paddingView = [[UIView alloc] initWithFrame: CGRectMake (0, 0, 15, самоврядування. userNameTxtFldOutlet.frame.size.height)]; Я. userNameTxtFldOutlet.leftView = paddingView; Я. userNameTxtFldOutlet.leftViewMode = UITextFieldViewModeAlways;
Аван

1
Це рішення набагато чистіше, ніж вищенаведений підклас. Слід уникати підкласів якомога більше. Пропоную наступне читання krakendev.io/blog/subclassing-can-suck-and-heres-why
Sylvain

33

Швидкий 4, Xcode 9

Мені подобається відповідь Pheepster , але як нам це зробити з розширення, не вимагаючи VC-коду чи будь-якого підкласу:

import UIKit

@IBDesignable
extension UITextField {

    @IBInspectable var paddingLeftCustom: CGFloat {
        get {
            return leftView!.frame.size.width
        }
        set {
            let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: newValue, height: frame.size.height))
            leftView = paddingView
            leftViewMode = .always
        }
    }

    @IBInspectable var paddingRightCustom: CGFloat {
        get {
            return rightView!.frame.size.width
        }
        set {
            let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: newValue, height: frame.size.height))
            rightView = paddingView
            rightViewMode = .always     
        }
    }
}

Це було б безпечнішеrightView?.frame.size.width ?? 0
Тал

Це могло б. Я для себе ніколи не дзвоню геттеру, щоб це мене не турбувало.
Теодор Цюрару

1
Хлопці, я змінив імена методів з paddingLeftна paddingLeftCustomі інші теж. Якщо я цього не зробив, помилка, яка пішла за мною два тижні, з’явилася б, коли ви використовували Перегляди, які мають UITextView (наприклад, UISearchBar). Просто ... не встановлюйте імена за замовчуванням.
Теодор Цюрару

17

у Swift 4.2 та Xcode 10

Спочатку моє текстове поле таке.

введіть тут опис зображення

Після додавання прокладки з лівого боку моє текстове поле стає ...

введіть тут опис зображення

//Code for left padding 
textFieldName.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 10, height: textFieldName.frame.height))
textFieldName.leftViewMode = .always

Як це, ми можемо створити і праву сторону. (TextFieldName.rightViewMode =. Завжди)

Якщо ви хочете код типу SharedInstance (Пишіть один раз, використовуйте кожен посуд), дивіться код нижче.

//This is my shared class
import UIKit
class SharedClass: NSObject {
    static let sharedInstance = SharedClass()

    //This is my padding function.
    func textFieldLeftPadding(textFieldName: UITextField) {
    // Create a padding view
    textFieldName.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 3, height: textFieldName.frame.height))
    textFieldName.leftViewMode = .always//For left side padding
    textFieldName.rightViewMode = .always//For right side padding
    }

    private override init() {

    }
}

Тепер назвіть цю функцію так.

//This single line is enough
SharedClass.sharedInstance.textFieldLeftPadding(textFieldName:yourTF)

2
Чи не повинно розширення працювати краще, ніж вводити спільний клас для такої незначної задачі?
Sharkes Monken

@ Sharkes Monken, я не розумію
iOS

@ Шаркс Монкен, можете мені пояснити, будь ласка. Дякую.
iOS

1
Я думаю, що це означає розширення UITextField для функції, синглтон для цього помічника функція не годиться
logan.Nguyen

14

Просте рішення швидкого доступу 3 - додайте код до viewDidLoad:

let indentView = UIView(frame: CGRect(x: 0, y: 0, width: 10, height: 20))
textField.leftView = indentView
textField.leftViewMode = .always

Немає необхідності в смішно довгому коді


Це не працює для UITextField всередині UISearchBar. :( Мені потрібне рішення, яке спеціально працює в такому випадку :(
Miki

@livtay Це не спрацює, коли ви використовуєте clearButtonMode або хочете мати leftView і т. д. Це швидкий виграш, але просто врахуйте дірку, в яку ви збираєтеся.
Haagenti

13

Використовувати тестоване розширення Swift 5:

extension UITextField {

enum PaddingSpace {
    case left(CGFloat)
    case right(CGFloat)
    case equalSpacing(CGFloat)
}

func addPadding(padding: PaddingSpace) {

    self.leftViewMode = .always
    self.layer.masksToBounds = true

    switch padding {

    case .left(let spacing):
        let leftPaddingView = UIView(frame: CGRect(x: 0, y: 0, width: spacing, height: self.frame.height))
        self.leftView = leftPaddingView
        self.leftViewMode = .always

    case .right(let spacing):
        let rightPaddingView = UIView(frame: CGRect(x: 0, y: 0, width: spacing, height: self.frame.height))
        self.rightView = rightPaddingView
        self.rightViewMode = .always

    case .equalSpacing(let spacing):
        let equalPaddingView = UIView(frame: CGRect(x: 0, y: 0, width: spacing, height: self.frame.height))
        // left
        self.leftView = equalPaddingView
        self.leftViewMode = .always
        // right
        self.rightView = equalPaddingView
        self.rightViewMode = .always
    }
}
}

Як використовувати

// equal padding
yourTextField.addPadding(padding: .equalSpacing(10)) 

// padding right 
yourTextField.addPadding(padding: .right(10))

// padding left
yourTextField.addPadding(padding: .left(10)) 

@ JoséRaúlToledanoR THX :)
Фабіо

Елегантний. Дякую.
Карло

@Carlo Grazie mille Carlo :)
Фабіо

10

Щоб створити подання прокладки для UITextField у Swift 5

func txtPaddingVw(txt:UITextField) {
    let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 5, height: 5))
    txt.leftViewMode = .always
    txt.leftView = paddingView
}

8

Підкласифікація UITextField - це шлях. Відкрийте майданчик і додайте наступний код:

class MyTextField : UITextField {
    var leftTextMargin : CGFloat = 0.0

    override func textRectForBounds(bounds: CGRect) -> CGRect {
        var newBounds = bounds
        newBounds.origin.x += leftTextMargin
        return newBounds
    }

    override func editingRectForBounds(bounds: CGRect) -> CGRect {
        var newBounds = bounds
        newBounds.origin.x += leftTextMargin
        return newBounds
    }
}

let tf = MyTextField(frame: CGRect(x: 0, y: 0, width: 100, height: 44))
tf.text = "HELLO"
tf.leftTextMargin = 25
tf.setNeedsLayout()
tf.layoutIfNeeded()

Це майже ідеально. У вас, ймовірно, є заповнювач місця, який має подібний мудрий метод: "placeholderRectForBounds", який ви також повинні переосмислити, і що ви додасте як x, слід відняти від ширини, інакше ви не можете бачити, який тип, коли текст виходить за межі довжини поле
Хаагенті

якщо ліворуч - 25, ширина повинна бути мінус 50, щоб мати рівну підкладку
Хаагенті

7

Ось відповідь Хаагенті оновлена ​​до Swift 4.2:

class PaddedTextField: UITextField {

    func getPadding(plusExtraFor clearButtonMode: ViewMode) -> UIEdgeInsets {
        var padding = UIEdgeInsets(top: 11, left: 16, bottom: 11, right: 16)

        // Add additional padding on the right side when showing the clear button
        if self.clearButtonMode == .always || self.clearButtonMode == clearButtonMode {
            padding.right = 28
        }

        return padding
    }

    override open func textRect(forBounds bounds: CGRect) -> CGRect {
        let padding = getPadding(plusExtraFor: .unlessEditing)
        return bounds.inset(by: padding)
    }

    override open func placeholderRect(forBounds bounds: CGRect) -> CGRect {
        let padding = getPadding(plusExtraFor: .unlessEditing)
        return bounds.inset(by: padding)
    }

    override open func editingRect(forBounds bounds: CGRect) -> CGRect {
        let padding = getPadding(plusExtraFor: .whileEditing)
        return bounds.inset(by: padding)
    }

}

Довідка: Оновлення до Swift 4.2 .

Редагувати : обліковий запис для очищення кнопки.


6

Створіть UIView з необхідним пробільним місцем та додайте його до textfield.leftView члена та встановіть для члена textfield.leftViewMode значення UITextFieldViewMode.Always

// For example if you have textfield named title
@IBOutlet weak var title: UITextField!
// Create UIView 
let paddingView : UIView = UIView(frame: CGRectMake(0, 0, 5, 20))
//Change your required space instaed of 5.
title.leftView = paddingView
title.leftViewMode = UITextFieldViewMode.Always

5

Помістіть цей код у своєму viewDidLoad():

textField.delegate = self

let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 20, height: self.textField.frame.height))
textField.leftView = paddingView
textField.leftViewMode = UITextFieldViewMode.always

Це працює для мене :)


5

Цей рядок коду врятував мене:

Для Xamarin.iOS:

textField.Layer.SublayerTransform = CATransform3D.MakeTranslation(5, 0, 0);

Для Swift:

textField.layer.sublayerTransform = CATransform3DMakeTranslation(5, 0, 0);

4

Відповідь ScareCrow у Swift 3

let padding = UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 5);

override func textRect(forBounds bounds: CGRect) -> CGRect {
    return UIEdgeInsetsInsetRect(bounds, padding)
}

override func placeholderRect(forBounds bounds: CGRect) -> CGRect {
    return UIEdgeInsetsInsetRect(bounds, padding)
}

override func editingRect(forBounds bounds: CGRect) -> CGRect {
    return UIEdgeInsetsInsetRect(bounds, padding)
}

4

У Swift 3. Ви можете використовувати користувацький UITextField з відступом, який встановлений у його конструкторі. Не потрібно додаткової декларації в контролері.

class CustomTextField : UITextField {

private let indentView = UIView(frame: CGRect(x: 0, y:0, width: 10, height: 10))

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    self.leftView = indentView
    self.leftViewMode = .always 
        }
}

4

Простий спосіб: зробити це за допомогою розширення UITextField

extension UITextField {

   func setPadding(left: CGFloat? = nil, right: CGFloat? = nil){
       if let left = left {
          let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: left, height: self.frame.size.height))
          self.leftView = paddingView
          self.leftViewMode = .always
       }

       if let right = right {
           let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: right, height: self.frame.size.height))
           self.rightView = paddingView
           self.rightViewMode = .always
       }
   }

}

Потім ви можете встановити набивання на будь-який край таким чином:

textField.setPadding(left: 5, right: 5)

спробуйте той самий код, але з кольоровими переглядами -ліво- і -право на iOS 13 та побудуйте його з xCode 11 ....)) Ви здивуєтеся, як textView змінює його вставки та гаряче переміщує погляди на краї, тож додані види не видно повністю
Massmaker

4

Я вважаю за краще використовувати IBDesignableклас та IBInspectableвластивості, щоб дозволити мені встановлювати прокладку через розкадровки Xcode і тримати її для багаторазового використання. Я також оновив код для роботи в Swift 4.

import Foundation
import UIKit

@IBDesignable
class PaddableTextField: UITextField {

    var padding = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 0.0)

    @IBInspectable var left: CGFloat = 0 {
        didSet {
            adjustPadding()
        }
    }

    @IBInspectable var right: CGFloat = 0 {
        didSet {
            adjustPadding()
        }
    }

    @IBInspectable var top: CGFloat = 0 {
        didSet {
            adjustPadding()
        }
    }

    @IBInspectable var bottom: CGFloat = 0 {
        didSet {
            adjustPadding()
        }
    }

    func adjustPadding() {
         padding = UIEdgeInsets(top: top, left: left, bottom: bottom, right: right)

    }

    override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
    }

    override func textRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.inset(by: UIEdgeInsets(top: top, left: left, bottom: bottom, right: right))
    }

    override func placeholderRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.inset(by: UIEdgeInsets(top: top, left: left, bottom: bottom, right: right))
    }

    override func editingRect(forBounds bounds: CGRect) -> CGRect {
         return bounds.inset(by: UIEdgeInsets(top: top, left: left, bottom: bottom, right: right))
    }
}

2

* Розширення UITextField у Swift 5 *

import UIKit

@IBDesignable
extension UITextField {

    @IBInspectable var paddingLeftCustom: CGFloat {
        get {
            return leftView!.frame.size.width
        }
        set {
            let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: newValue, height: frame.size.height))
            leftView = paddingView
            leftViewMode = .always
        }
    }

    @IBInspectable var paddingRightCustom: CGFloat {
        get {
            return rightView!.frame.size.width
        }
        set {
            let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: newValue, height: frame.size.height))
            rightView = paddingView
            rightViewMode = .always
        }
    }

}

0
//MARK:-  Use this class for different type of Roles

import UIKit

class HelperExtensionViewController: UIViewController {

}

//MARK:- Extension

extension UIImageView
{
    func setImageCornerRadius()
    {
        self.layer.cornerRadius = self.frame.size.height/2
        self.clipsToBounds = true
    }

    func setImageCornerRadiusInPoints(getValue:CGFloat)
    {
        self.layer.cornerRadius = getValue
        self.clipsToBounds = true
    }
}

extension UIButton
{
    func setButtonCornerRadiusOnly()
    {
        self.layer.cornerRadius = self.frame.size.height/2
        self.clipsToBounds = true
    }

    func setBtnCornerRadiusInPoints(getValue:CGFloat)
    {
        self.layer.cornerRadius = getValue
        self.clipsToBounds = true
    }


}

extension UITextField
{
    func setTextFieldCornerRadiusWithBorder()
    {
        self.layer.cornerRadius = self.frame.size.height/2
        self.layer.borderColor = UIColor.darkGray.cgColor
        self.backgroundColor = UIColor.clear
        self.layer.borderWidth = 0.5
        self.clipsToBounds = true
    }

    func setLeftPaddingPoints(_ amount:CGFloat){
        let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: amount, height: self.frame.size.height))
        self.leftView = paddingView
        self.leftViewMode = .always
    }
    func setRightPaddingPoints(_ amount:CGFloat) {
        let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: amount, height: self.frame.size.height))
        self.rightView = paddingView
        self.rightViewMode = .always
    }
}



extension UIView
{

    func setCornerRadius()
    {
        self.layer.cornerRadius = self.frame.size.height/2
        self.clipsToBounds = true
    }

    // OUTPUT 1
    func setViewCornerRadiusWithBorder()
    {
        self.layer.cornerRadius = self.frame.size.height/2
        self.layer.borderColor = UIColor.init(red: 95.0/255.0, green: 229.0/255.0, blue: 206.0/255.0, alpha: 1.0).cgColor
        self.backgroundColor = UIColor.clear
        self.layer.borderWidth = 1.0
        self.clipsToBounds = true
    }

    func layoutSubviews(myView:UIView)
    {
        let shadowPath = UIBezierPath(rect: myView.bounds)
        myView.layer.masksToBounds = false
        myView.layer.shadowColor = UIColor.lightGray.cgColor
        myView.layer.shadowOffset = CGSize(width: -1.0, height: 2.0)
        myView.layer.shadowOpacity = 0.5
        myView.layer.shadowPath = shadowPath.cgPath
    }

    func layoutSubviews2(myView:UIView)
    {
        let shadowPath = UIBezierPath(rect: myView.bounds)
        myView.clipsToBounds = true
        myView.layer.masksToBounds = false
        myView.layer.shadowColor = UIColor.black.cgColor
        myView.layer.shadowOffset = CGSize(width: 0.0, height: 1.0)
        myView.layer.shadowOpacity = 0.2
        myView.layer.shadowPath = shadowPath.cgPath

    }

    func setViewCornerRadiusInPoints(getValue:CGFloat)
    {
        self.layer.cornerRadius = getValue
        self.clipsToBounds = true
    }


    func dropShadow(scale: Bool = true) {
        layer.masksToBounds = false
        layer.shadowColor = UIColor.black.cgColor
        layer.shadowOpacity = 0.5
        layer.shadowOffset = CGSize(width: -1, height: 1)
        layer.shadowRadius = 1

        layer.shadowPath = UIBezierPath(rect: bounds).cgPath
        layer.shouldRasterize = true
        layer.rasterizationScale = scale ? UIScreen.main.scale : 1
    }

    // OUTPUT 2
    func dropShadow(color: UIColor, opacity: Float = 0.5, offSet: CGSize, radius: CGFloat = 1, scale: Bool = true) {
        layer.masksToBounds = false
        layer.shadowColor = color.cgColor
        layer.shadowOpacity = opacity
        layer.shadowOffset = offSet
        layer.shadowRadius = radius

        layer.shadowPath = UIBezierPath(rect: self.bounds).cgPath
        layer.shouldRasterize = true
        layer.rasterizationScale = scale ? UIScreen.main.scale : 1
    }

    func setGradientBackground(myview:UIView) {
        let colorTop =  UIColor(red: 100.0/255.0, green: 227.0/255.0, blue: 237.0/255.0, alpha: 1.0).cgColor
        let colorBottom = UIColor(red: 141.0/255.0, green: 109.0/255.0, blue: 164.0/255.0, alpha: 1.0).cgColor

        let gradientLayer = CAGradientLayer()
        gradientLayer.colors = [colorTop, colorBottom]
        gradientLayer.locations = [1.0, 1.0]
        gradientLayer.frame = myview.bounds

        myview.layer.insertSublayer(gradientLayer, at:0)
    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.