// // PollOptionView.swift // Tusker // // Created by Shadowfacts on 4/25/21. // Copyright © 2021 Shadowfacts. All rights reserved. // import UIKit import Pachyderm class PollOptionView: UIView { private let unselectedBackgroundColor = UIColor(white: 0.5, alpha: 0.25) let checkbox: PollOptionCheckboxView init(poll: Poll, option: Poll.Option) { checkbox = PollOptionCheckboxView(multiple: poll.multiple) super.init(frame: .zero) let minHeight: CGFloat = 35 layer.cornerRadius = 0.1 * minHeight backgroundColor = unselectedBackgroundColor checkbox.translatesAutoresizingMaskIntoConstraints = false addSubview(checkbox) let label = EmojiLabel() label.translatesAutoresizingMaskIntoConstraints = false label.numberOfLines = 0 label.text = option.title label.setEmojis(poll.emojis, identifier: poll.id) addSubview(label) if (poll.voted ?? false) || poll.effectiveExpired, let optionVotes = option.votesCount { let fillView = UIView() fillView.translatesAutoresizingMaskIntoConstraints = false fillView.backgroundColor = tintColor.withAlphaComponent(0.6) fillView.layer.zPosition = -1 fillView.layer.cornerRadius = layer.cornerRadius addSubview(fillView) NSLayoutConstraint.activate([ fillView.leadingAnchor.constraint(equalTo: leadingAnchor), fillView.widthAnchor.constraint(equalTo: widthAnchor, multiplier: CGFloat(optionVotes) / CGFloat(poll.votesCount)), fillView.topAnchor.constraint(equalTo: topAnchor), fillView.bottomAnchor.constraint(equalTo: bottomAnchor), ]) } let minHeightConstraint = heightAnchor.constraint(greaterThanOrEqualToConstant: minHeight) // on the first layout, something is weird and this becomes ambiguous even though it's fine on subsequent layouts // this keeps autolayout from complaining minHeightConstraint.priority = .required - 1 NSLayoutConstraint.activate([ minHeightConstraint, checkbox.centerYAnchor.constraint(equalTo: centerYAnchor), checkbox.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 8), label.topAnchor.constraint(equalTo: topAnchor), label.bottomAnchor.constraint(equalTo: bottomAnchor), label.leadingAnchor.constraint(equalTo: checkbox.trailingAnchor, constant: 8), label.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -8), ]) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } }