Swift: как изменить размер шрифта в UITextView при использовании AutoLayout?

Я занимаюсь программированием на Swift неделю и хочу создать свое первое приложение с Autolayout. Текущее состояние моего приложения таково, что я создаю группу PictureCell в моем ViewController. Их размер зависит от значения ползунка (а также рассчитывается в ViewController). Это прекрасно работает.

Моя борьба заключается в настройке внутренней части моего PictureCell. Моя цель - иметь метку в ячейке, размер шрифта которой автоматически изменяется при изменении размера ячейки.

В текущем состоянии я могу изменить размер Cell и UITextView, как я хочу, но я не могу изменить размер шрифта в Textview, потому что это константа просто вызывается при инициализации (я думаю).

Как мне решить эту проблему?

Из-за непонимания логики Swifts я должен опубликовать весь код PictureCell:

class PictureCell: UICollectionViewCell {
override init(frame: CGRect) {
    super.init(frame: frame)
    self.translatesAutoresizingMaskIntoConstraints = false
    self.layer.cornerRadius = self.bounds.width / 20
    self.clipsToBounds = true

    setupViews()
}

let descriptionTextView: UITextView = {
    let textView = UITextView()
    textView.text = "Header"
    textView.textColor = .black
    textView.backgroundColor = .white
    textView.translatesAutoresizingMaskIntoConstraints = false
    textView.textAlignment = .center
    textView.isEditable = false
    textView.isScrollEnabled = false
    textView.sizeToFit()
    textView.font = UIFont.boldSystemFont(ofSize: textView.contentSize.height / 2) // Resize that

    textView.layer.borderWidth = 2
    textView.layer.borderColor = UIColor.red.cgColor

    return textView
}()


var mainPicture: UIImageView = {
    let imageView = UIImageView()
    imageView.contentMode = .scaleAspectFill
    imageView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    imageView.clipsToBounds = true

    return imageView
}()

 func setPictureForIndex(index: Int)  {
    self.mainPicture.image = UIImage(named: "color\(index)")
}

func setupViews() {
    addSubview(mainPicture)
    confMainPicture()

    addSubview(descriptionTextView)
    confDescriptionTextView()
}

func confMainPicture() {
    mainPicture.translatesAutoresizingMaskIntoConstraints = false
    mainPicture.widthAnchor.constraint(equalTo: self.widthAnchor).isActive = true
    mainPicture.heightAnchor.constraint(equalTo: self.heightAnchor).isActive = true
    mainPicture.topAnchor.constraint(equalTo: self.topAnchor).isActive = true
    mainPicture.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true
}

func confDescriptionTextView(){
    descriptionTextView.translatesAutoresizingMaskIntoConstraints = false
    descriptionTextView.widthAnchor.constraint(equalTo: self.widthAnchor).isActive = true
    descriptionTextView.heightAnchor.constraint(equalTo: mainPicture.heightAnchor, multiplier: 0.25).isActive = true
    descriptionTextView.topAnchor.constraint(equalTo: self.topAnchor).isActive = true
}

Слишком мало для текста

Swift: как изменить размер шрифта в UITextView при использовании AutoLayout?

Просто хорошо

Swift: как изменить размер шрифта в UITextView при использовании AutoLayout?

Слишком большой, чтобы хорошо выглядеть

Swift: как изменить размер шрифта в UITextView при использовании AutoLayout?

Этот ответ должен помочь
Awais Fayyaz 10.08.2018 08:48

это с раскадровкой

Noodledew 10.08.2018 11:29
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
135
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Этот код более или менее решил мою проблему: Это не работает должным образом, если ячейка действительно мала, но это лучше, чем исходная точка, и, возможно, кто-то сможет ее использовать.

class PictureCell: UICollectionViewCell {
override init(frame: CGRect) {
    super.init(frame: frame)
    self.translatesAutoresizingMaskIntoConstraints = false
    self.layer.cornerRadius = self.bounds.width / 20
    self.clipsToBounds = true
    setupViews()
}
//MARK: -

var cellIdetifier = Int()

var mainPicture: UIImageView = {
    let imageView = UIImageView()
    imageView.contentMode = .scaleAspectFill
    imageView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    imageView.clipsToBounds = true
    imageView.layer.cornerRadius = imageView.bounds.width / 20
    return imageView
}()

var descriptionBox: UIView = {
    let descVie = UIView()
    descVie.backgroundColor = UIColor(red: 0.1 , green: 0.1, blue: 0.1, alpha: 0.5)
    descVie.layer.borderWidth = 0.5
    descVie.layer.borderColor = UIColor.black.cgColor
    descVie.clipsToBounds = true
    descVie.layer.cornerRadius = descVie.bounds.height / 5
    return descVie
}()

lazy var descLabel: UITextField = {
    let label = UITextField()
    label.textColor = .white
    label.textAlignment = .center
    label.clipsToBounds = true
    label.font = UIFont.systemFont(ofSize: 15)
    label.adjustsFontSizeToFitWidth = true
    label.autoresizingMask = [.flexibleWidth,.flexibleHeight]
    label.sizeToFit()
    label.layoutIfNeeded()
    label.isUserInteractionEnabled = false
    return label
}()

func setPictureForIndex(index: Int, name: String)  {
    self.descLabel.text = name
    self.mainPicture.image = UIImage(named: "color\(index)")
}
// MARK: -
// MARK: Layout
func setupViews() {
    addSubview(mainPicture)
    addSubview(descriptionBox)
    descriptionBox.addSubview(descLabel)
    confBounds()
}

func confBounds() {
    mainPicture.translatesAutoresizingMaskIntoConstraints = false
    mainPicture.widthAnchor.constraint(equalTo: self.widthAnchor).isActive = true
    mainPicture.heightAnchor.constraint(equalTo: self.heightAnchor).isActive = true
    mainPicture.topAnchor.constraint(equalTo: self.topAnchor).isActive = true
    mainPicture.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true

    descriptionBox.translatesAutoresizingMaskIntoConstraints = false
    descriptionBox.widthAnchor.constraint(equalTo: self.widthAnchor).isActive = true
    descriptionBox.heightAnchor.constraint(equalTo: mainPicture.heightAnchor, multiplier: 0.25).isActive = true
    descriptionBox.topAnchor.constraint(equalTo: self.topAnchor).isActive = true
    descriptionBox.bottomAnchor.constraint(greaterThanOrEqualTo: mainPicture.topAnchor, constant: 1)

    descLabel.translatesAutoresizingMaskIntoConstraints = false
    descLabel.widthAnchor.constraint(equalTo: descriptionBox.widthAnchor).isActive = true
    descLabel.heightAnchor.constraint(equalTo: descriptionBox.heightAnchor).isActive = true
    descLabel.bottomAnchor.constraint(equalTo: descriptionBox.bottomAnchor).isActive = true
    descLabel.heightAnchor.constraint(equalTo: descriptionBox.heightAnchor).isActive = true
}

}

Другие вопросы по теме

Считается ли авторским правом, если я использую небольшую часть песни для воспроизведения в качестве будильника в моем приложении iOS? Будет ли мое приложение удалено за нарушение авторских прав?
XCode Thread 1: ошибка сигнала SIGABRT завершается неперехваченным исключением типа NSException (lldb)
IOS, Swift, UITextField Изменение цвета текста, набранного с помощью typingAttributes, цвет первой буквы не изменяется
Как программно создавать кнопки на лету с помощью Xamarin iOS с текстом из API (JSON)?
Как исправить функцию NSLinguisticTagger с ошибкой «Тип 'String' не имеет члена 'tokenType'» на Mac OSX (функция работает на iOS)?
RxSwift: Почему flatMapLatest никогда не выполняет onCompleted ()?
Импортировать необязательную структуру
Как вы можете использовать кнопку для быстрой отправки вибрационного рисунка на другое устройство iOS?
Не удается показать видеодорожку - неопознанный селектор отправлен в ошибку экземпляра
Мой UIImageView не анимируется по экрану, пока не достигнет конца

Похожие вопросы