UITextFieldの最初にスペースを作成する


149

次のように、UITextFieldの先頭に少しスペースを残したい: UITextFieldに左マージンを追加する

しかし、私はSwiftでそれを行う方法を知りません。


:さて、あなたはないサブクラスSWIFTは、Objective-Cでオブジェクトが、あなたはそれを他の方法で回避を行うことができます...だから私のあなただけの答えを調整して、それを組み合わせて、あなたを推測することができますdeveloper.apple.com/library/prerelease/ ios / documentation / Swift /…
Grady Player

1
これはおそらく最良の解決策ではありませんが、uiview * paddingViewを作成して実行することができますUITextField.leftView = paddingView。したがって、パディングビューに希望の幅を与えます。
ipalibowhyte 2014

1
パディングビューは、希望する幅のバニラUIViewになるだけです
Grady Player

Swift 5の場合:textField.layoutMargins.left = 20
Oleksandr

回答:


283

これは私が今使っているものです:

Swift 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;
}

幅と高さを計算するときに、上部と左のインセットを2倍にするのはなぜですか?それをする必要はありません。関連する2つのインセットを一緒に追加し、元の境界から合計を差し引く必要があります。または、両方を順番に減算します。
アッシュ

1
@ Mr.UB現在のデバイスのプラットフォームを確認し、それに基づいて異なるパディングを作成します。stackoverflow.com/questions/4567728/…。おそらくこのようなもので
Haagenti

Appleは、newBoundsメソッドに相当するUIEdgeInsetsInsetRect関数を提供しています。代わりに、メソッドをreturn self.newBounds(bounds)使用return UIEdgeInsetsInsetRect(bounds, padding)して削除することができますnewBounds
モバイルダン

テキストフィールドが複数行ある場合、これはプレースホルダーテキストが中心と代わるtextAlignment = .LEFTとcontentVerticalAlignment = .topます
コードWiget

@Ryan久しぶりですが、UITextFieldは1行だけだと思っていました。次に、UITextViewを複数行に使用します。
Haagenti

194

拡張機能を使用する場合、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
非常にエレガントで優れたソリューション。私が行った唯一の変更は、それらを1つの関数に追加したことで、textField.setPaddingFor(left:10、right:10)のようなものを取得しました。両方のparamsは、あなたがパディングnilを渡した場合は0になりますので、任意です
Nermin Sehic

4
すごい!しかし、textField.clearButtonMode = .alwaysを設定する場合は、左側のパディングのみを設定する必要があります。右のパディングは、クリアボタンを右に移動します。
Peter Kreinz、2016

2
1つの観察。これは、先頭/末尾のパディングのようなものです。しかし、奇妙なのは、それがテキストフィールドのテキスト配置に応答することです!! アプリの言語の方向ではありません。
ハサン、

UILabelで設定する方法?
無実の

すごい!本文とプレースホルダの両方に使用できます。
Akash 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、self。userNameTxtFldOutlet.frame.size.height)]; 自己。userNameTxtFldOutlet.leftView = paddingView; 自己。userNameTxtFldOutlet.leftViewMode = UITextFieldViewModeAlways;
Avaan

1
このソリューションは、上記のサブクラス化よりもはるかにクリーンです。サブクラス化はできるだけ回避する必要があります。次の記事を
Sylvain

33

Swift 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
Tal

かもしれない。私自身、ゲッターを呼び出さないで、邪魔になりません。
Teodor Ciuraru 2017

1
みんな、メソッドの名前をpaddingLeftto paddingLeftCustomから、もう一方にも変更しました。これを行わなかった場合、UITextView(UISearchBarなど)を備えたビューを使用していたときに、2週間後に発生したバグが表示されていました。ただ...デフォルトの名前を設定しないでください。
Teodor Ciuraru、2018

17

スウィフト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 = .always)

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

@ Sharkes Monken、説明してくれませんか。ありがとうございました。
iOS

1
関数の拡張UITextField、このヘルパーfuncのシングルトンは良くないことを意味すると思います
logan.Nguyen

14

シンプルなSwift 3ソリューション-viewDidLoadにコードを追加します。

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

途方もなく長いコードは不要


これは、UISearchBar内のUITextFieldでは機能しません。:(その場合に特に機能する解決策が必要です:(
Miki

あなたがclearButtonModeを使用するかleftViewを持ちたいときにはかかわらず、迅速な勝利ですが、ちょうどあなたが行っている穴に注意するなど、これは動作しません@livtay。
ハーゲンティ

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úlToledanoRTHX :)
ファビオ

エレガント。ありがとうございました。
Carlo

@Carlo Grazie Mille Carlo :)
ファビオ

10

Swift 5でUITextFieldのパディングビューを作成するには

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として追加したものは幅から差し引く必要があります。そうしないと、テキストがフィールド
Haagenti 2014年

左が25の場合、パディングを等しくするには幅をマイナス50にする必要があります
Haagenti

7

これは、Swift 4.2に更新されたHaagentiの回答です。

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

この1行のコードで私を救いました:

Xamarin.iOSの場合:

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

Swiftの場合:

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

4

Scareftの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で-left-および-right-の色付きのビューを使用して、xCode 11でビルドします...)))textViewがインセットを変更し、ビューを移動する方法に驚く追加されたビューが完全に表示されないようにエッジを作成します
Massmaker '

4

Xcodeストーリーボードを介してパディングを設定し、再利用できるようにするために、IBDesignableクラスとIBInspectableプロパティを使用することを好みます。また、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

* Swift 5でのUITextFieldの拡張*

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)
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.