Добавление UILabel в UITextView в быстром - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть textView, где пользователь может что-то написать и метка для отображения количества символов в textView.Вот как я создаю свой textView и метку

    var messageTextView: UITextView = {
    let textView = UITextView()
    return textView
}()
var messageTextViewTextCounterLabel: UILabel = {
    let label = UILabel()
    return label
}()

У меня есть функция для настройки моей метки и uitextview.

       let guide = self.view.safeAreaLayoutGuide

        messageTextView.text = "Write something..:"
        messageTextView.delegate = self
        self.view.addSubview(messageTextView)

        messageTextView.translatesAutoresizingMaskIntoConstraints = false
        messageTextView.leadingAnchor.constraint(equalTo: guide.leadingAnchor, constant: 20).isActive = true
        messageTextView.trailingAnchor.constraint(equalTo: guide.trailingAnchor, constant: -20).isActive = true
        messageTextView.topAnchor.constraint(equalTo: guide.topAnchor, constant: 0).isActive = true
        messageTextView.bottomAnchor.constraint(equalTo: guide.bottomAnchor, constant: -20).isActive = true


        messageTextViewTextCounterLabel.text = "0/800"
        self.messageTextView.addSubview(messageTextViewTextCounterLabel)

        messageTextViewTextCounterLabel.translatesAutoresizingMaskIntoConstraints = false
        messageTextViewTextCounterLabel.trailingAnchor.constraint(equalTo: messageTextView.leadingAnchor, constant: 0).isActive = true
        messageTextViewTextCounterLabel.bottomAnchor.constraint(equalTo: messageTextView.bottomAnchor, constant: 0).isActive = true
        messageTextViewTextCounterLabel.heightAnchor.constraint(equalToConstant: 15).isActive = true

Я размещаю свою метку так, чтобы она находилась внутри моего TextView.Я хочу, чтобы он был в правом нижнем углу, но метка появляется в правом нижнем углу текста в моем textView.[image1[1]

Как мне разместить ярлык внутри textview, чтобы он находился в правом нижнем углу?(НЕ в правом нижнем углу текста)

Ответы [ 4 ]

0 голосов
/ 04 февраля 2019

Я изменил

 self.messageTextView.addSubview(messageTextViewTextCounterLabel)

на

 self.view.addSubview(messageTextViewTextCounterLabel)

, но есть и другое решение.Вместо ограничения, равного messageTextView, мы можем изменить его на self.view.safeAreaLayoutGuide.trailingAnchor / bottomAnchor

@ ilqaryasov.решение:

  messageTextViewTextCounterLabel.trailingAnchor.constraint
(equalTo: guide.trailingAnchor, constant: -20).isActive = true

messageTextViewTextCounterLabel.bottomAnchor.constraint
(equalTo: guide.bottomAnchor, constant: -20).isActive = true
0 голосов
/ 01 февраля 2019
import UIKit

class ViewController: UIViewController {

    @IBOutlet var messageTextViewTextCounterLabel:UILabel!
    @IBOutlet var messageTextField:UITextField!
    @IBOutlet var messageTextView:UITextView!

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional
self.messageTextField.delegate = self
self.messageTextView.delegate = self
}

 }

UITextField

extension ViewController:UITextFieldDelegate {
    //TextField Delegate Methods
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
 if(textField == messageTextField){
        //Check TextField Lenth
        let newLength = textField.text!.count + string.count - range.length
        //Bind Lenth in label 8/800
        messageTextViewTextCounterLabel.text = "\(newLength)/800"
        return newLength <= 800  
    }
    return true

}

// UITextView

extension ViewController:UITextViewDelegate {
//TextField Delegate Methods

func textViewShouldReturn(_ textField: UITextField) -> Bool {
    textField.resignFirstResponder()
    return true
}
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    if(textView == messageTextView){

    let newLength = textView.text!.count + text.count - range.length
    messageTextViewTextCounterLabel.text = "\(newLength)/800"
    return newLength <= 800
}
return true

}
0 голосов
/ 01 февраля 2019

Вы можете решить эту проблему, задав те же ограничения trailing и bottom для метки.

    messageTextViewTextCounterLabel.trailingAnchor.constraint
    (equalTo: guide.trailingAnchor, constant: -20).isActive = true

    messageTextViewTextCounterLabel.bottomAnchor.constraint
    (equalTo: guide.bottomAnchor, constant: -20).isActive = true

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

0 голосов
/ 01 февраля 2019
messageTextViewTextCounterLabel.trailingAnchor.constraint(equalTo: messageTextView.leadingAnchor, constant: 0).isActive = true

Он должен быть равен messageTextView. trailingAnchor.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...