//
// ViewController.swift
// RActionSheet
//
// Created by ray on 2017/8/15.
// Copyright © 2017年 ray. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
var label: UILabel!
var btn: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
let label = UILabel.init(frame: CGRect.init(x: 0, y: 100, width: RScreenW, height: 30))
label.font = UIFont.systemFont(ofSize: 15)
label.text = "有个大牛说:对待警告要像对待错误一样.有个大牛说:对待警告要像对待错误一样.有个大牛说:对待警告要像对待错误一样."
label.numberOfLines = 1
self.view.addSubview(label)
self.label = label
let btn = UIButton.init(type: UIButtonType.system)
btn.frame = CGRect.init(x: 0, y: label.frame.origin.y+label.frame.size.height, width: 50, height: 30)
btn.setTitle("展开", for: .normal)
btn.addTarget(self, action: #selector(showMore), for: UIControlEvents.touchUpInside)
self.btn = btn
self.view.addSubview(btn)
}
func showMore() {
if self.label.numberOfLines == 0 {
self.label.numberOfLines = 1
self.label.frame = CGRect.init(x: 0, y: 100, width: RScreenW, height: 30)
btn.frame.origin = CGPoint.init(x: 0, y: label.frame.origin.y+label.frame.size.height)
btn.setTitle("展开", for: .normal)
return
}
self.label.numberOfLines = 0
self.label.frame = CGRect.init(x: 0, y: 100, width: RScreenW, height: (self.label.text?.heightWithConstrainedWidth(width: RScreenW, font: self.label.font))!)
btn.frame.origin = CGPoint.init(x: 0, y: label.frame.origin.y+label.frame.size.height)
btn.setTitle("收起", for: .normal)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
extension String {
func heightWithConstrainedWidth(width: CGFloat, font: UIFont) -> CGFloat {
let constraintRect = CGSize(width: width, height: CGFloat.greatestFiniteMagnitude)
let boundingBox = self.boundingRect(with: constraintRect, options: NSStringDrawingOptions.usesLineFragmentOrigin, attributes: [NSFontAttributeName: font], context: nil)
return boundingBox.height
}
}
网友评论