From 657e0bfbef62572eed178aa7c5f6da6d95dc3f13 Mon Sep 17 00:00:00 2001 From: Alexander Rutsman Date: Wed, 15 Dec 2021 10:55:35 +0300 Subject: [PATCH] fix: removed LabeledScrollView, added attributedText --- .../TIScrollLabel/LabeledScrollView.swift | 113 ------------------ .../TIScrollLabel/TIScrollLabel.swift | 74 ++++++++++-- 2 files changed, 61 insertions(+), 126 deletions(-) delete mode 100644 TIUIElements/Sources/Views/TIScrollLabel/TIScrollLabel/LabeledScrollView.swift diff --git a/TIUIElements/Sources/Views/TIScrollLabel/TIScrollLabel/LabeledScrollView.swift b/TIUIElements/Sources/Views/TIScrollLabel/TIScrollLabel/LabeledScrollView.swift deleted file mode 100644 index 870857c3..00000000 --- a/TIUIElements/Sources/Views/TIScrollLabel/TIScrollLabel/LabeledScrollView.swift +++ /dev/null @@ -1,113 +0,0 @@ -// -// Copyright (c) 2021 Touch Instinct -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the Software), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// - -import UIKit - -open class LabeledScrollView: BaseInitializableScrollView { - - private let textLabel = UILabel() - private let contentView = UIView() - - // MARK: - Configurable Properties - - public var text: String = "" { - didSet { - textLabel.text = text - } - } - - public var textColor: UIColor = .black { - didSet { - textLabel.textColor = textColor - } - } - - public var font: UIFont = UIFont.systemFont(ofSize: 13) { - didSet { - textLabel.font = font - } - } - - public var textAligment: NSTextAlignment = .center { - didSet { - textLabel.textAlignment = textAligment - } - } - - // MARK: - Initialization - - open override func addViews() { - super.addViews() - - addSubview(contentView) - contentView.addSubview(textLabel) - } - - open override func configureAppearance() { - super.configureAppearance() - - showsVerticalScrollIndicator = false - showsHorizontalScrollIndicator = false - backgroundColor = .clear - clipsToBounds = true - - textLabel.numberOfLines = 0 - textLabel.textAlignment = textAligment - textLabel.textColor = textColor - textLabel.font = font - } - - open override func configureLayout() { - super.configureLayout() - - contentView.translatesAutoresizingMaskIntoConstraints = false - textLabel.translatesAutoresizingMaskIntoConstraints = false - - let contentViewBottomConstraint = contentView.bottomAnchor.constraint(equalTo: bottomAnchor) - let contentViewCenterYConstraint = contentView.centerYAnchor.constraint(equalTo: centerYAnchor) - let contentViewHeightConstraint = contentView.heightAnchor.constraint(equalTo: heightAnchor) - - [ - contentViewBottomConstraint, - contentViewCenterYConstraint, - contentViewHeightConstraint - ].forEach { $0.priority = .defaultLow } - - NSLayoutConstraint.activate([ - contentView.leadingAnchor.constraint(equalTo: leadingAnchor), - contentView.trailingAnchor.constraint(equalTo: trailingAnchor), - contentView.topAnchor.constraint(equalTo: topAnchor), - contentView.centerXAnchor.constraint(equalTo: centerXAnchor), - contentViewBottomConstraint, - contentViewCenterYConstraint, - contentViewHeightConstraint - ]) - - NSLayoutConstraint.activate([ - textLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - textLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), - textLabel.topAnchor.constraint(equalTo: contentView.topAnchor), - textLabel.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - textLabel.heightAnchor.constraint(equalTo: contentView.heightAnchor) - ]) - } -} diff --git a/TIUIElements/Sources/Views/TIScrollLabel/TIScrollLabel/TIScrollLabel.swift b/TIUIElements/Sources/Views/TIScrollLabel/TIScrollLabel/TIScrollLabel.swift index 716e147e..f358ea7a 100644 --- a/TIUIElements/Sources/Views/TIScrollLabel/TIScrollLabel/TIScrollLabel.swift +++ b/TIUIElements/Sources/Views/TIScrollLabel/TIScrollLabel/TIScrollLabel.swift @@ -23,50 +23,98 @@ import UIKit import TIUIElements -open class TIScrollLabel: BaseInitializableView { +open class TIScrollLabel: BaseInitializableScrollView { - private let labeledScrollView = LabeledScrollView() + private let textLabel = UILabel() + private let contentView = UIView() + + // MARK: - Configurable Properties public var text: String = "" { didSet { - labeledScrollView.text = text + textLabel.text = text + } + } + + public var attributedText: NSAttributedString? = nil { + didSet { + textLabel.attributedText = attributedText } } public var textColor: UIColor = .black { didSet { - labeledScrollView.textColor = textColor + textLabel.textColor = textColor } } - + public var font: UIFont = UIFont.systemFont(ofSize: 13) { didSet { - labeledScrollView.font = font + textLabel.font = font } } public var textAlignment: NSTextAlignment = .center { didSet { - labeledScrollView.textAlignment = textAlignment + textLabel.textAlignment = textAlignment } } + // MARK: - Initialization + open override func addViews() { super.addViews() - addSubview(labeledScrollView) + addSubview(contentView) + contentView.addSubview(textLabel) + } + + open override func configureAppearance() { + super.configureAppearance() + + showsVerticalScrollIndicator = false + showsHorizontalScrollIndicator = false + backgroundColor = .clear + clipsToBounds = true + + textLabel.numberOfLines = 0 + textLabel.textAlignment = textAlignment + textLabel.textColor = textColor + textLabel.font = font } open override func configureLayout() { super.configureLayout() - labeledScrollView.translatesAutoresizingMaskIntoConstraints = false + contentView.translatesAutoresizingMaskIntoConstraints = false + textLabel.translatesAutoresizingMaskIntoConstraints = false + + let contentViewBottomConstraint = contentView.bottomAnchor.constraint(equalTo: bottomAnchor) + let contentViewCenterYConstraint = contentView.centerYAnchor.constraint(equalTo: centerYAnchor) + let contentViewHeightConstraint = contentView.heightAnchor.constraint(equalTo: heightAnchor) + + [ + contentViewBottomConstraint, + contentViewCenterYConstraint, + contentViewHeightConstraint + ].forEach { $0.priority = .defaultLow } NSLayoutConstraint.activate([ - labeledScrollView.leadingAnchor.constraint(equalTo: leadingAnchor), - labeledScrollView.trailingAnchor.constraint(equalTo: trailingAnchor), - labeledScrollView.topAnchor.constraint(equalTo: topAnchor), - labeledScrollView.bottomAnchor.constraint(equalTo: bottomAnchor) + contentView.leadingAnchor.constraint(equalTo: leadingAnchor), + contentView.trailingAnchor.constraint(equalTo: trailingAnchor), + contentView.topAnchor.constraint(equalTo: topAnchor), + contentView.centerXAnchor.constraint(equalTo: centerXAnchor), + contentViewBottomConstraint, + contentViewCenterYConstraint, + contentViewHeightConstraint + ]) + + NSLayoutConstraint.activate([ + textLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), + textLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + textLabel.topAnchor.constraint(equalTo: contentView.topAnchor), + textLabel.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), + textLabel.heightAnchor.constraint(equalTo: contentView.heightAnchor) ]) } }