//
// CommonCell.swift
// geekTime
//
// Created by zhj on 2019/11/23.
// Copyright © 2019 geekbang. All rights reserved.
//
import Foundation
import UIKit
import SnapKit
class CommonCell: UIControl {
var title: String? {
didSet {
self.titleView.text = self.title
}
}
var icon: UIImage? {
didSet {
self.iconView.image = self.icon
}
}
var titleView: UILabel
var iconView: UIImageView
var bottomLine: UIView
var arrowView: UIImageView
var hilightView: UIView
override init(frame: CGRect) {
titleView = UILabel()
iconView = UIImageView()
bottomLine = UIView()
arrowView = UIImageView(image: R.image.icon_right_arrow())
hilightView = UIView()
super.init(frame: frame)
self.backgroundColor = .white
self.setupViews()
}
func setupViews() {
self.addSubview(hilightView)
hilightView.backgroundColor = UIColor(white: 0.9, alpha: 1)
hilightView.isHidden = true
hilightView.alpha = 0
hilightView.snp.makeConstraints { (make) in
make.edges.equalToSuperview()
}
self.addSubview(iconView)
iconView.snp.makeConstraints { (make) in
make.left.equalToSuperview().offset(20)
make.centerY.equalToSuperview()
make.width.height.equalTo(32)
}
self.addSubview(titleView)
titleView.textColor = UIColor.hexColor(0x333333)
titleView.font = UIFont.systemFont(ofSize: 15)
titleView.snp.makeConstraints { (make) in
make.left.equalTo(iconView.snp_right).offset(10)
make.centerY.equalToSuperview()
}
self.addSubview(arrowView)
arrowView.snp.makeConstraints { (make) in
make.right.equalToSuperview().offset(-20)
make.centerY.equalToSuperview()
}
self.addSubview(bottomLine)
bottomLine.backgroundColor = UIColor(white: 0.95, alpha: 1)
bottomLine.snp.makeConstraints { (make) in
make.bottom.equalToSuperview()
make.left.right.equalToSuperview()
make.height.equalTo(1 / UIScreen.main.scale)
}
}
override var isHighlighted: Bool {
didSet {
super.isHighlighted = self.isHighlighted
if self.isHighlighted {
self.hilightView.alpha = 1
self.hilightView.isHidden = false
} else {
UIView.animate(withDuration: 0.5, animations: {
self.hilightView.alpha = 0
}) { (finished) in
self.hilightView.isHidden = true
}
}
}
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
使用
//
// MineViewController.swift
// geekTimeSwiftUI
//
// Created by Ben Lv on 2020/1/29.
// Copyright © 2020 ruibo. All rights reserved.
//
import UIKit
class MineViewController: BaseViewController {
var accountCell: CommonCell!
var purchasedCell: CommonCell!
var dealCell: CommonCell!
var groupCell: CommonCell!
var avatarView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
self.createTopViews()
self.createFirstGroupCells()
// Do any additional setup after loading the view.
}
private func createTopViews() {
let topView = UIView(frame: .zero)
topView.backgroundColor = .white
view.addSubview(topView)
topView.snp.makeConstraints { (make) in
make.left.top.right.equalToSuperview()
make.height.equalTo(160)
}
avatarView = UIImageView(image: R.image.defaultAvatarJpg())
avatarView.layer.cornerRadius = 60
avatarView.layer.masksToBounds = true
topView.addSubview(avatarView)
avatarView.snp.makeConstraints { (make) in
make.left.equalToSuperview().offset(20)
make.top.equalToSuperview().offset(20)
make.width.height.equalTo(120)
}
let button = UIButton(type: .custom)
button.setTitle("点击登录", for: .normal)
button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 25)
button.setTitleColor(UIColor.hexColor(0x333333), for: .normal)
button.addTarget(self, action: #selector(didClickLoginButton), for: .touchUpInside)
topView.addSubview(button)
button.snp.makeConstraints { (make) in
make.left.equalTo(avatarView.snp_right).offset(15)
make.top.equalTo(avatarView).offset(15)
}
}
@objc func didClickLoginButton() {
let loginVC = LoginViewController()
loginVC.hidesBottomBarWhenPushed = true
navigationController?.pushViewController(loginVC, animated: true)
}
@objc func didClickPurchasedCell() {
let dealVC = DealListViewController()
dealVC.hidesBottomBarWhenPushed = true
navigationController?.pushViewController(dealVC, animated: true)
}
private func createFirstGroupCells() {
accountCell = CommonCell()
accountCell.icon = R.image.icon_life()
accountCell.title = "账户"
view.addSubview(accountCell)
accountCell.snp.makeConstraints { (make) in
make.top.equalTo(170)
make.left.right.equalToSuperview()
make.height.equalTo(55)
}
purchasedCell = CommonCell()
purchasedCell.icon = R.image.icon_between()
purchasedCell.title = "已购"
purchasedCell.addTarget(self, action: #selector(didClickPurchasedCell), for: .touchUpInside)
view.addSubview(purchasedCell)
purchasedCell.snp.makeConstraints { (make) in
make.top.equalTo(accountCell.snp_bottom)
make.left.right.equalToSuperview()
make.height.equalTo(55)
}
dealCell = CommonCell()
dealCell.icon = R.image.icon_live()
dealCell.title = "商城订单"
view.addSubview(dealCell)
dealCell.snp.makeConstraints { (make) in
make.top.equalTo(purchasedCell.snp_bottom)
make.left.right.equalToSuperview()
make.height.equalTo(55)
}
groupCell = CommonCell()
groupCell.icon = R.image.icon_document()
groupCell.title = "我的拼团"
view.addSubview(groupCell)
groupCell.snp.makeConstraints { (make) in
make.top.equalTo(dealCell.snp_bottom)
make.left.right.equalToSuperview()
make.height.equalTo(55)
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
hidesBottomBarWhenPushed = false
}
}