35 lines
1.2 KiB
Swift
35 lines
1.2 KiB
Swift
import CoreText
|
|
import UIKit
|
|
|
|
extension NSAttributedString {
|
|
func ss_pageRanges(size: CGSize) -> [NSRange] {
|
|
var ranges: [NSRange] = []
|
|
let framesetter = CTFramesetterCreateWithAttributedString(self)
|
|
let path = CGPath(rect: CGRect(origin: .zero, size: size), transform: nil)
|
|
var visibleRange = CFRangeMake(0, 0)
|
|
var location = 0
|
|
|
|
while visibleRange.location + visibleRange.length < length {
|
|
let frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(location, 0), path, nil)
|
|
visibleRange = CTFrameGetVisibleStringRange(frame)
|
|
guard visibleRange.length > 0 else {
|
|
break
|
|
}
|
|
ranges.append(NSRange(location: location, length: visibleRange.length))
|
|
location += visibleRange.length
|
|
}
|
|
|
|
return ranges
|
|
}
|
|
}
|
|
|
|
extension UIColor {
|
|
var ss_cssString: String {
|
|
var red: CGFloat = 0
|
|
var green: CGFloat = 0
|
|
var blue: CGFloat = 0
|
|
var alpha: CGFloat = 0
|
|
getRed(&red, green: &green, blue: &blue, alpha: &alpha)
|
|
return String(format: "rgba(%d, %d, %d, %.3f)", Int(red * 255), Int(green * 255), Int(blue * 255), alpha)
|
|
}
|
|
} |