| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- // Copyright 2020 Google LLC
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- import UIKit
- /// This view is shown on the `User` screen when no one in signed in.
- final class SignedOutView: UIView {
- init() {
- super.init(frame: CGRect.zero)
- setupSubviews()
- }
- @available(*, unavailable)
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- /// Layout exclamation symbol and label explaining there is no user signed in
- private func setupSubviews() {
- let systemImageName = "exclamationmark.circle"
- let placeHolderImage = UIImage(systemName: systemImageName)?
- .withTintColor(.secondaryLabel, renderingMode: .alwaysOriginal)
- let imageView = UIImageView(image: placeHolderImage)
- imageView.translatesAutoresizingMaskIntoConstraints = false
- addSubview(imageView)
- NSLayoutConstraint.activate([
- imageView.centerXAnchor.constraint(equalTo: centerXAnchor),
- imageView.centerYAnchor.constraint(equalTo: centerYAnchor, constant: -50),
- imageView.heightAnchor.constraint(equalToConstant: 100),
- imageView.widthAnchor.constraint(equalToConstant: 100),
- ])
- let label = UILabel()
- label.numberOfLines = 3
- label.attributedText = configuredAttributedString()
- addSubview(label)
- label.translatesAutoresizingMaskIntoConstraints = false
- label.topAnchor.constraint(equalTo: imageView.bottomAnchor, constant: 20).isActive = true
- label.centerXAnchor.constraint(equalTo: centerXAnchor).isActive = true
- label.widthAnchor.constraint(equalTo: widthAnchor, multiplier: 0.80).isActive = true
- }
- private func configuredAttributedString() -> NSAttributedString {
- let paragraph = NSMutableParagraphStyle()
- paragraph.lineBreakMode = .byWordWrapping
- paragraph.alignment = .center
- let attributes: [NSAttributedString.Key: Any] = [
- .paragraphStyle: paragraph,
- .foregroundColor: UIColor.secondaryLabel,
- ]
- let imageAttachment = NSTextAttachment()
- let imageName = "person.crop.circle.fill.badge.plus"
- let image = UIImage(systemName: imageName)?
- .withTintColor(.systemOrange, renderingMode: .alwaysOriginal)
- imageAttachment.image = image
- let firstPartOfString = "There are no users currently signed in. Press the "
- let secondPartOfString = " button on the tab bar and select a login option."
- let fullString = NSMutableAttributedString(string: firstPartOfString)
- fullString.append(NSAttributedString(attachment: imageAttachment))
- fullString.append(NSAttributedString(string: secondPartOfString))
- fullString.addAttributes(attributes, range: NSRange(location: 0, length: fullString.length))
- return fullString
- }
- }
|