// // CounterView.swift // NativeCounter // // Created by 김민준 on 2021/04/25. // import UIKit class CounterView: UIView { override init(frame: CGRect) { super.init(frame: frame) setupView() } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) setupView() } private func setupView() { self.addSubview(valueLabel) self.addSubview(buttonsView) // buttonsView 위치 설정 buttonsView.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 8) .isActive = true buttonsView.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -8) .isActive = true buttonsView.heightAnchor.constraint(equalToConstant: 48) .isActive = true buttonsView.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: -8) .isActive = true // buttonView에 버튼 추가 buttonsView.addArrangedSubview(leftButton) buttonsView.addArrangedSubview(rightButton) setupEvents() } private func setupEvents() { let leftButtonTap = UITapGestureRecognizer( target: self, action: #selector(pressLeftButton) ) leftButton.addGestureRecognizer(leftButtonTap) let rightButtonTap = UITapGestureRecognizer( target: self, action: #selector(pressRightButton) ) rightButton.addGestureRecognizer(rightButtonTap) } let valueLabel: UILabel = { let label = UILabel() label.text = "0" label.textAlignment = .center label.font = label.font.withSize(36) label.autoresizingMask = [.flexibleWidth, .flexibleHeight] // 화면의 중앙에 숫자 보여주기 return label }() let buttonsView: UIStackView = { let view = UIStackView() view.axis = .horizontal view.distribution = .fillEqually view.spacing = 8 view.alignment = .fill view.translatesAutoresizingMaskIntoConstraints = false return view }() let leftButton: UIButton = { let button = UIButton() button.setTitleColor(.black, for: .normal) button.setTitleColor(.gray, for: .highlighted) button.setTitle("Button", for: .normal) button.showsTouchWhenHighlighted = true return button }() let rightButton: UIButton = { let button = UIButton() button.setTitleColor(.black, for: .normal) button.setTitleColor(.gray, for: .highlighted) button.setTitle("Button", for: .normal) button.showsTouchWhenHighlighted = true return button }() @objc func setValue(_ val: NSNumber) { valueLabel.text = val.stringValue } @objc func setLeftButtonText(_ val: NSString) { leftButton.setTitle(val as String, for: .normal) } @objc func setRightButtonText(_ val: NSString) { rightButton.setTitle(val as String, for: .normal) } @objc var onPressLeftButton: RCTDirectEventBlock? @objc var onPressRightButton: RCTDirectEventBlock? @objc func pressLeftButton(sender: UIButton) { if onPressLeftButton == nil { return } let event = [AnyHashable: Any]() onPressLeftButton!(event) } @objc func pressRightButton(sender: UIButton) { if onPressRightButton == nil { return } let event = [AnyHashable: Any]() onPressRightButton!(event) } }