Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

UITextFieldのテキストの左側に余白を設ける(Swift4)

More than 3 years have passed since last update.

はじめに

Obj-C時代から思っていましたが、UITextViewにはテキストの左側に余白があるのに、なぜUITextFieldにはないのでしょうか…。
ということで、こちらの記事を参考にさせていただき、Swift4でUITextFieldのテキストの左側にパディング(内側の余白)を実装します。

パディングの実装

@IBInspectable を使うことにより、ストーリーボード上で padding の値を指定できるようにしています。
デフォルト値を設定しているため、値を指定しなくても使えます。

PaddingTextField.swift
import UIKit

@IBDesignable class PaddingTextField: UITextField {
    // MARK: Properties

    /// テキストの内側の余白
    @IBInspectable var padding: CGPoint = CGPoint(x: 6.0, y: 0.0)

    // MARK: Internal Methods

    override func textRect(forBounds bounds: CGRect) -> CGRect {
        // テキストの内側に余白を設ける
        return bounds.insetBy(dx: self.padding.x, dy: self.padding.y)
    }

    override func editingRect(forBounds bounds: CGRect) -> CGRect {
        // 入力中のテキストの内側に余白を設ける
        return bounds.insetBy(dx: self.padding.x, dy: self.padding.y)
    }

    override func placeholderRect(forBounds bounds: CGRect) -> CGRect {
        // プレースホルダーの内側に余白を設ける
        return bounds.insetBy(dx: self.padding.x, dy: self.padding.y)
    }
uhooi
iOSアプリ開発とSwiftが好きです✨ 趣味:テニス、アナログゲーム
https://theuhooi.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away