একটি ইউআইটিেক্সটফিল্ডের শুরুতে স্থান তৈরি করুন


149

আমি এখানে যেমন ইউআইটিেক্সটফিল্ডের শুরুতে কিছুটা জায়গা ছেড়ে যেতে চাই: ইউআইটিেক্সটফিল্ডে বাম দিকের মার্জিন যুক্ত করুন

তবে সুইফট দিয়ে কীভাবে তা করতে হয় তা আমি জানি না।


ভাল, আপনি উদ্দেশ্য-সি-তে অবিচলিত বস্তুগুলিকে সাবক্লাস করতে পারবেন না, তবে আপনি এটি অন্য উপায়ে করতে পারেন ... সুতরাং আমার ধারণা আপনি কেবল উত্তরটি সামঞ্জস্য করুন এবং এটিকে একত্রিত করুন: বিকাশকারী /
গ্রেডি প্লেয়ার

1
এটি সম্ভবত সেরা সমাধান নয়, তবে আপনি একটি ইউভিউ * প্যাডিংভিউ তৈরি করতে এবং করতে পারেন UITextField.leftView = paddingView। সুতরাং প্যাডিংটি আপনার পছন্দসই প্রস্থটি দিন।
ipalibowhyte

1
প্যাডিং ভিউটি কেবল একটি ভ্যানিলা ইউআইভিউউ হবে যা আপনার পছন্দগুলির প্রস্থের সাথে থাকবে
গ্রেডি প্লেয়ার

সুইফট 5 এর জন্য: টেক্সটফিল্ড.লেআউটআউটমার্গিনস.ফেল্ট = 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)
    }
}

আমি কখনও অন্য প্যাডিং সেট করি না তবে আপনি টুইট করতে পারেন। এই শ্রেণীটি পাঠ্যক্ষেত্রের ডানদর্শন এবং বাম ভিউয়ের যত্ন নেয় না। আপনি যদি এটি সঠিকভাবে পরিচালনা করতে চান তবে আপনি এর মতো কিছু ব্যবহার করতে পারেন (উদাহরণস্বরূপ অবজেক্টে এবং আমার কেবল ডানদিকের প্রয়োজন: ভিউ:

- (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
@ মিঃ ইউবি বর্তমান ডিভাইসটি কী প্ল্যাটফর্মটি পরীক্ষা করে দেখুন এবং তার ভিত্তিতে বিভিন্ন প্যাডিং তৈরি করুন। স্ট্যাকওভারফ্লো / প্রশ্ন / 4567728/… । সম্ভবত এরকম কিছু নিয়ে
হাগেন্তি

অ্যাপল ফাংশন newBoundsসহ পদ্ধতির সমতুল্য সরবরাহ করে UIEdgeInsetsInsetRect। পরিবর্তে return self.newBounds(bounds)আপনি পদ্ধতিটি ব্যবহার return UIEdgeInsetsInsetRect(bounds, padding)এবং মুছে ফেলতে পারেন newBounds
মোবাইল ড্যান

আপনার টেক্সট ক্ষেত্রের একাধিক লাইনের হয়, তাহলে এই প্লেসহোল্ডার পাঠ্যের কেন্দ্রিক এবং supercedes textAlignment = .left এবং contentVerticalAlignment = .top তোলে
কোড Wiget

@ রায়ান এটি কিছুক্ষণ হয়েছে, তবে ইউআইটিেক্সটফিল্ডটি কেবলমাত্র আমি ভেবেছিলাম। একটি ইউআইটিেক্সটভিউ তখন মাল্টলাইনের জন্য ব্যবহার করা উচিত।
হাগেন্তি

196

আপনি যদি কোনও এক্সটেনশান ব্যবহার করেন তবে ইউআইটিেক্সটফিল্ড সাবক্লাস করার দরকার নেই এবং নতুন কার্যকারিতা আপনার অ্যাপ্লিকেশনটিতে যে কোনও ইউআইটিেক্সটফিল্ডকে উপলব্ধ করা হবে:

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)

সুইফট এক্সটেনশান ব্যবহার করে কার্যকারিতা সরাসরি সাবক্লাসিং ছাড়াই ইউআইটিেক্সটফিল্ডে যুক্ত করা হয়।

আশাকরি এটা সাহায্য করবে!


8
দুর্দান্ত সমাধান, খুব মার্জিত। আমি কেবল পরিবর্তন করেছি যে আমি সেগুলিকে একটি ফাংশনে যুক্ত করেছি যাতে আমি টেক্সটফিল্ড.সেটপ্যাডিংফোর্ডের মতো কিছু পাই (বাম: 10, ডান: 10)। উভয়
প্যারামগুলিই তাই alচ্ছিক

4
গ্রেট! তবে আপনি যদি টেক্সটফিল্ড.সিলেয়ার বাটনমোড = .আলও সেট করেন তবে আপনাকে কেবল বাম প্যাডিং সেট করতে হবে। ডান প্যাডিং পরিষ্কার বোতামটি ডানে সরিয়ে নিয়ে যাবে।
পিটার ক্রেইনজ

2
একটি পর্যবেক্ষণ। এটি আরও শীর্ষস্থানীয় / পিছনের প্যাডিংয়ের মতো। তবে, আশ্চর্যের বিষয়টি এটি পাঠ্যক্ষেত্রের পাঠ্য প্রান্তিককরণের প্রতিক্রিয়া জানায় !! অ্যাপ্লিকেশন ভাষার দিকনির্দেশ নয়।
হাসান

ইউআইএলবেলে কীভাবে সেট করবেন?
নির্দোষ

গ্রেট! মূল পাঠ্যের পাশাপাশি স্থানধারকের জন্য কাজ করে।
আকাশ ভরদ্বাজ

70

এক্স, ওয়াই, জেড আপনার পছন্দসই মান

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

10
পাশাপাশি স্পষ্ট বোতাম ডানে সরানোর সময় - এই textField.clearButtonMode = UITextFieldViewMode.Always সঙ্গে কাজ বলে মনে হচ্ছে না
CaptainProton

1
ক্লিয়ার বোতামটি যখন দেখানোর দরকার হয় তখন কাজ করে না ... সাফ বোতামটি পাশাপাশি সরানো হয়।
এক্সদেব

এই অ্যানওয়ারটি সংক্ষিপ্ত তবে সম্পূর্ণ নয় এবং পরে এটি বেরিয়ে যেতে পারে। @ অ্যাড্রিয়ান আপনার দুর্দান্ত দৃষ্টিকোণ রয়েছে, তবে এটি উপায় নয়। আপনি এটি একটি সাবক্লাসের সাথে করার কারণটি সমস্ত প্রান্তের ক্ষেত্রে রয়েছে। এই কোডটি সম্ভবত সাবক্লাস সমাধানের আগে ক্রাশ হবে। তবে আপনি ঠিক বলেছেন যে আপনার এমন কোড লেখা উচিত নয় যা কঠোরভাবে প্রয়োজন হয় না এবং প্রদত্ত লাইব্রেরিগুলি ব্যবহার করে সরবরাহ করা যেতে পারে তবে আপনি মানক লাইব্রেরিগুলিকে অপব্যবহার করবেন না
হাগেন্তি

খুব ভাল! Thnx!
বুহারিন

46

এ জাতীয় প্রান্তিককরণ সেট leftView/ rightViewটু করে অর্জন করা যায় UITextField

সুইফট 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
যদি এখানে "অবজেক্টিভ সি" তে কারওর প্রয়োজন হয় কোডটি, ইউআইভিউ * প্যাডিংভিউ = [[ইউআইভিউ বরাদ্দ] ইনিউথফ্রেম: সিজিআরেক্টমেক (0, 0, 15, স্ব। ব্যবহারকারীর নাম টেক্সটএফলেটআউটলেট.ফ্রেম.সাইজ.হাইট)]; স্ব। userNameTxtFldOutlet.leftView = প্যাডিংভিউ; স্ব। userNameTxtFldOutlet.leftViewMode = ইউআইটিেক্সটফিল্ডভিউমোডএলওয়েজ;
আভান

1
এই দ্রবণটি উপরে বর্ণিত সাবক্লাসিংয়ের তুলনায় অনেক পরিষ্কার। সাবক্লাসিং যতটা সম্ভব এড়ানো উচিত। আমি নিম্নলিখিত পড়া সুপারিশ krakendev.io/blog/subclassing-can-suck-and-heres-why
সিলভাঁ

33

সুইফট 4, এক্সকোড 9

আমি ফিপস্টারের উত্তরটি পছন্দ করি তবে ভিসি কোড বা কোনও সাবক্লাসিংয়ের প্রয়োজন ছাড়াই আমরা এক্সটেনশন থেকে এটি কীভাবে করব:

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এবং অন্য এক খুব। যদি আমি এটি না করে থাকি, আপনি যখন ইউআইটিেক্সটভিউ (যেমন ইউআইসন্ধানবার) এর মত ভিউ ব্যবহার করেন তখন দু'সপ্তাহে আমার অনুসরণকারী একটি বাগ উপস্থিত হতে পারে। কেবল ... ডিফল্ট নামগুলি সেট করবেন না।
টিওডোর সিউরারু

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

এটির মতো আমরা ডান দিকটিও তৈরি করতে পারি text (টেক্সটফিল্ডনেম.সাইটর ভিউমোড = .আলও)

আপনি যদি 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
এত ছোটখাটো কাজের জন্য ভাগ করা শ্রেণি প্রবর্তনের চেয়ে সম্প্রসারণের কাজ আরও ভাল হওয়া উচিত নয়?
মনকেন

@ শঙ্কার মনকেন, আমি বুঝতে পারি না
আইওএস

@ শারকে মনকে, আপনি কি আমার জন্য এটি ব্যাখ্যা করতে পারেন? ধন্যবাদ.
আইওএস

1
আমি মনে করি এটির অর্থ ফাংশনটির জন্য এক্সটেনশন ইউআইটিেক্সটফিল্ড, এই সহায়ক সাহায্যকারীর জন্য
সিঙ্গেলটন

14

সরল সুইফ্ট 3 সমাধান - দ্যডলিডে কোড যুক্ত করুন:

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

হাস্যকরভাবে দীর্ঘ কোডের প্রয়োজন নেই


এটি কোনও ইউআইএসবারবারের অভ্যন্তরে ইউআইটিেক্সটফিল্ডের জন্য কাজ করে না। :( আমি সমাধান যে ক্ষেত্রে :( বিশেষভাবে কাজ করে প্রয়োজন
Miki

@livtay এই না করবে না কাজ যখন আপনি clearButtonMode ব্যবহার করুন অথবা একটি leftView করতে চান, ইত্যাদি এই যদিও একটি দ্রুত জয় হয় কিন্তু সচেতন গর্ত আপনি চলুন হও।
Haagenti

13

আমার এক্সটেনশন সুইফট 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)) 

@ জোসেআরলটোলডানোআর THX :)
ফ্যাবিও

মার্জিত। ধন্যবাদ.
কার্লো

@ কার্লো গ্রাজি মিল কার্লো :)
ফ্যাবিও

10

সুইফট 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

সাবক্লাসিং ইউআইটিেক্সটফিল্ড যাওয়ার উপায়। একটি খেলার মাঠ খুলুন এবং নিম্নলিখিত কোড যুক্ত করুন:

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()

এটি প্রায় নিখুঁত। আপনার কাছে সম্ভবত একটি প্লেসোল্ডার রয়েছে যার মত একটি বিজ্ঞ পদ্ধতি রয়েছে: "প্লেসহোল্ডার রেকটফাউন্ডস" যা আপনার ওভাররাইড করা উচিত এবং এক্স হিসাবে আপনি যা যুক্ত করেন তা প্রস্থ থেকে বিয়োগ করা উচিত অন্যথায় আপনি যখন পাঠ্যটির দৈর্ঘ্যের বাইরে চলে যান তখন আপনি কী দেখতে পাবেন না ক্ষেত্র
হাগেন্তি

সমান প্যাডিংয়ের জন্য বামে 25 প্রস্থের বিয়োগ 50 হতে হবে
হাগেন্তি

7

এখানে হাগেন্তির উত্তরটি সুইফটে ৪.২ এ আপডেট হয়েছে:

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)
    }

}

রেফারেন্স: 4.2 সুইফটে আপগ্রেড করা

সম্পাদনা করুন : ক্লিয়ার বোতামের জন্য অ্যাকাউন্ট।


6

প্রয়োজনীয় প্যাডিং স্পেস সহ ইউআইভিউ তৈরি করুন এবং এটি টেক্সটফিল্ড.লেফটভিউ সদস্য হিসাবে যুক্ত করুন এবং টেক্সটফিল্ড.লফটভিউমোড সদস্যকে ইউআইটিেক্সটফিল্ডভিউমোড.এলওয়েতে সেট করুন

// 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);

সুইফ্টের জন্য:

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

4

সুইফট 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

সুইফটে ৩. আপনি কন্সট্রাক্টে সেট করা ইনডেন্টের সাথে কাস্টম ইউআইটিেক্সটফিল্ড ব্যবহার করতে পারেন। একটি নিয়ামক অতিরিক্ত ঘোষণার প্রয়োজন হবে না।

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

সহজ উপায়: ইউআইটিেক্সটফিল্ড প্রসারিত করে এটি করা

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)

একই কোডটি ব্যবহার করে তবে আইওএস 13-এ রঙিন-বাম এবং ডানদিকের মতামত সহ এবং এক্সকোড 11 দিয়ে এটি নির্মাণ করুন ....)) আপনি কীভাবে টেক্সটভিউ এর কীটকে কীভাবে পরিবর্তন করেন এবং গরম এটি দৃষ্টিভঙ্গিগুলির দিকে নিয়ে যায় সে সম্পর্কে আপনি অবাক হবেন প্রান্তগুলি যাতে যুক্ত দর্শনগুলি সম্পূর্ণরূপে দৃশ্যমান না হয়
মাসমেকার

4

এক্সকোড স্টোরিবোর্ডগুলির মাধ্যমে প্যাডিং সেট করতে এবং এটিকে পুনরায় ব্যবহারযোগ্য রাখার জন্য আমি IBDesignableশ্রেণি এবং IBInspectableবৈশিষ্ট্যগুলি ব্যবহার করতে পছন্দ করি । আমি সুইফট 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

* সুইফট 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)
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.