代碼可以直接用
Swift(2022.2.7) 最新版:http://www.reibang.com/p/31ae2900853d
OC版:http://www.reibang.com/p/a8eb3bbdc00f
//MARK: - UIView 擴展
extension UIView{
/** xib適配 */
func layoutXib(){
for view in self.subviews {
var returnRect = CGRect()
returnRect.size.width = view.width.adapterWidthValue
returnRect.size.height = view.height.adapterWidthValue
returnRect.origin.x = view.x.adapterWidthValue
returnRect.origin.y = view.y.adapterWidthValue
view.frame = returnRect
if view .isKind(of: UITextField.self){
let viewField = view as! UITextField
let attributedStr:NSMutableAttributedString = viewField.attributedText?.mutableCopy() as! NSMutableAttributedString
viewField.attributedText?.enumerateAttributes(in: NSRange(location: 0,length: viewField.text?.count ?? 0), options: .longestEffectiveRangeNotRequired, using: { (dic, range, stop) in
attributedStr.removeAttribute(.font, range: range)
let font:UIFont = dic[NSAttributedString.Key.font] as! UIFont
let fontSize:CGFloat! = font.pointSize
let fontName:String! = font.fontName
attributedStr.addAttributes([NSAttributedString.Key.font:UIFont.init(name: fontName, size: Xlb.ADAPTATION_WIDTH(fontSize))!], range: range)
})
viewField.attributedText = attributedStr
/** 設(shè)置PlaceHolder */
let placeAttributedStr:NSMutableAttributedString = viewField.attributedPlaceholder?.mutableCopy() as! NSMutableAttributedString
viewField.attributedPlaceholder?.enumerateAttributes(in: NSRange(location: 0,length: viewField.placeholder?.count ?? 0), options: .longestEffectiveRangeNotRequired, using: { (dic, range, stop) in
placeAttributedStr.removeAttribute(.font, range: range)
let font:UIFont = dic[NSAttributedString.Key.font] as! UIFont
let fontSize:CGFloat! = font.pointSize
let fontName:String! = font.fontName
placeAttributedStr.addAttributes([NSAttributedString.Key.font:UIFont.init(name: fontName, size: Xlb.ADAPTATION_WIDTH(fontSize))!], range: range)
})
viewField.attributedPlaceholder = placeAttributedStr
} else if view.isKind(of: UIButton.self){
let viewButton = view as! UIButton
let fontSize:CGFloat! = viewButton.titleLabel!.font?.pointSize
let fontName:String! = viewButton.titleLabel!.font?.fontName
viewButton.titleLabel!.font = UIFont.init(name: fontName, size: Xlb.ADAPTATION_WIDTH(fontSize))
} else if view.isKind(of: UILabel.self){
let viewLabel = view as! UILabel
let attributedStr:NSMutableAttributedString = viewLabel.attributedText?.mutableCopy() as! NSMutableAttributedString
viewLabel.attributedText?.enumerateAttributes(in: NSRange(location: 0,length: viewLabel.text?.count ?? 0), options: .longestEffectiveRangeNotRequired, using: { (dic, range, stop) in
attributedStr.removeAttribute(.font, range: range)
let font:UIFont = dic[NSAttributedString.Key.font] as! UIFont
let fontSize:CGFloat! = font.pointSize
let fontName:String! = font.fontName
attributedStr.addAttributes([NSAttributedString.Key.font:UIFont.init(name: fontName, size: Xlb.ADAPTATION_WIDTH(fontSize))!], range: range)
})
viewLabel.attributedText = attributedStr
} else if view.isKind(of: UITextView.self){
let viewTextView = view as! UITextView
let fontSize:CGFloat! = viewTextView.font?.pointSize
let fontName:String! = viewTextView.font?.fontName
viewTextView.font = UIFont.init(name: fontName, size: Xlb.ADAPTATION_WIDTH(fontSize))
}
}
}
/** View轉(zhuǎn)Image */
func imageWithView() ->(UIImage) {
let imageSize = self.bounds.size
UIGraphicsBeginImageContextWithOptions(imageSize, false, UIScreen.main.scale)
self.layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return image
}
var x: CGFloat {
get { return self.frame.origin.x}
set(value) {
var origin = self.frame.origin
origin.x = value
self.frame.origin = origin
}
}
var y: CGFloat {
get { return self.frame.origin.y}
set(value) {
var origin = self.frame.origin
origin.y = value
self.frame.origin = origin
}
}
var centerX: CGFloat {
get { return self.center.x}
set(value) {
var center = self.center
center.x = value
self.center = center
}
}
var centerY: CGFloat {
get { return self.center.y}
set(value) {
var center = self.center
center.y = value
self.center = center
}
}
var width: CGFloat {
get { return self.frame.size.width}
set(value) {
var size = self.frame.size
size.width = value
self.frame.size = size
}
}
var height: CGFloat {
get { return self.frame.size.height}
set(value) {
var size = self.frame.size
size.height = value
self.frame.size = size
}
}
var origin: CGPoint {
get { return self.frame.origin}
set(value) {
self.frame.origin = value
}
}
var size: CGSize {
get { return self.frame.size}
set(value) {
self.frame.size = value
}
}
}
//MARK: - CGFloat 擴展
extension CGFloat{
/** 寬度適配 */
var adapterWidthValue:CGFloat {
return Xlb.MAINSCREEN_WIDTH() * self / 375.0
}
/** 高度適配 */
var adapterHeightValue:CGFloat {
return Xlb.MAINSCREEN_HEIGHT() * self / 667.0
}
}
class Xlb: NSObject {
/** 適配寬度 */
class func ADAPTATION_WIDTH( _ value:CGFloat) -> CGFloat {
return self.MAINSCREEN_WIDTH() * value / 375.0
}
/** 適配高度 */
class func ADAPTATION_HEIGHT( _ value:CGFloat) -> CGFloat {
return self.MAINSCREEN_HEIGHT() * value / 667.0
}
}