美文网首页
IOS swift 学习记录

IOS swift 学习记录

作者: 路边的风景呢 | 来源:发表于2020-11-11 16:19 被阅读0次



1: swift     富文本使用


(1) location : 开始的下标 

(2) length : 长度

let  attributeText =NSMutableAttributedString.init(string: "")

        attributeText.addAttributes([NSAttributedString.Key.foregroundColor:UIColorFormRGB(rgbValue:0x97D5FF)], range:NSRange.init(location:0, length: user_name.count+1))

        cell?.contentLabel.attributedText= attributeText


2: swift    动态计算字符串的宽  高       把下面的方法 复制到你的PCH 文件中


extension String {

    funcboundingRect(with constrainedSize:CGSize, font:UIFont, lineSpacing:CGFloat? =nil) ->CGSize{

        letattritube =NSMutableAttributedString(string:self)

        letrange =NSRange(location:0, length: attritube.length)

        attritube.addAttributes([NSAttributedString.Key.font: font], range: range)

        iflineSpacing!=nil{

            letparagraphStyle =NSMutableParagraphStyle()

            paragraphStyle.lineSpacing= lineSpacing!

            attritube.addAttribute(NSAttributedString.Key.paragraphStyle, value: paragraphStyle, range: range)

        }

        letrect = attritube.boundingRect(with: constrainedSize, options: [.usesLineFragmentOrigin, .usesFontLeading], context:nil)

        varsize = rect.size

        ifletcurrentLineSpacing = lineSpacing {

            // 文本的高度减去字体高度小于等于行间距,判断为当前只有1行

            letspacing = size.height-font.lineHeight

            ifspacing<=currentLineSpacing&&spacing>0{

                size =CGSize(width: size.width, height: font.lineHeight)

            }

        }

        returnsize

    }

    funcboundingRect(with constrainedSize:CGSize, font:UIFont, lineSpacing:CGFloat? =nil, lines:Int) ->CGSize{

        iflines<0{

            return.zero

        }

        letsize =boundingRect(with: constrainedSize, font: font, lineSpacing: lineSpacing)

        iflines==0{

            returnsize

        }

        letcurrentLineSpacing = (lineSpacing==nil) ? (font.lineHeight-font.pointSize) : lineSpacing!

        letmaximumHeight = font.lineHeight*CGFloat(lines)+currentLineSpacing*CGFloat(lines-1)

        ifsize.height>=maximumHeight {

            returnCGSize(width: size.width, height: maximumHeight)

        }

        returnsize

    }

}


3 :    颜色渐变  把下面的方法 复制到你的PCH 文件中


// 设置渐变颜色

funcsetGradientLayer(view :UIView, colors : [CGColor])  {

    letgradientLayer =CAGradientLayer()

    gradientLayer.colors= colors

    gradientLayer.locations= [0.0,1.0]

    gradientLayer.frame= view.bounds

    letrect = view.bounds

    letradio =CGSize(width:20, height:20)// 圆角尺寸

    let corner = UInt8(UIRectCorner.bottomRight.rawValue) | UInt8(UIRectCorner.bottomLeft.rawValue) |  UInt8(UIRectCorner.topLeft.rawValue) |  UInt8(UIRectCorner.topRight.rawValue) // 这只圆角位置

    letpath =UIBezierPath(roundedRect: rect, byRoundingCorners:UIRectCorner(rawValue:UIRectCorner.RawValue(corner)), cornerRadii: radio)

    letmasklayer =CAShapeLayer()// 创建shapelayer

    masklayer.frame= rect

    masklayer.path= path.cgPath// 设置路径

    gradientLayer.mask= masklayer

    view.layer.insertSublayer(gradientLayer, at:0)

}


4 :  JSON字符串与字典转换


//json 字符串转字典

func getDictionaryFromJSONString(jsonString:String) ->NSDictionary{

    letjsonData:Data= jsonString.data(using: .utf8)!

    letdict =try?JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers)

    ifdict!=nil{

        returndictas!NSDictionary

    }

    return NSDictionary()

}

//json 字典转字符串

func getJSONStringFromDictionary(dictionary:NSDictionary) -> String {

    if(!JSONSerialization.isValidJSONObject(dictionary)) {

        print("无法解析出JSONString")

        return""

    }

    letdata :NSData! =try?JSONSerialization.data(withJSONObject: dictionary, options: [])asNSData?

    letJSONString =NSString(data:dataasData,encoding:String.Encoding.utf8.rawValue)

    returnJSONString!asString

}


5 :  字符串下面加横线


func setAttrString(oldStr:String,foregroundColor:UIColor,strikethroughColor:UIColor) ->NSMutableAttributedString{

    letattrString =NSMutableAttributedString(string: oldStr)

    letattr: [NSAttributedString.Key:Any] = [.foregroundColor: foregroundColor, .strikethroughStyle:NSUnderlineStyle.single.rawValue, .strikethroughColor: strikethroughColor]

    attrString.addAttributes(attr, range:NSRange(location:0, length: attrString.length))

    returnattrString

}


6 : 颜色 16 进制 转换


///16进制转颜色

func UIColorFormRGB(rgbValue:UInt) ->UIColor{

    return UIColor(red:CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,

                   green:CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,

                   blue:CGFloat(rgbValue & 0x0000FF)  / 255.0,

                   alpha:CGFloat(1.0))

}


7 : 秒数 转换为  00:00:00


//传入秒数 转换成 00:00:00

func secondChangeTypeFormatDate(second:Int) ->String{

    let formatter = DateComponentsFormatter.init()

    //.pad为0:00:00格式 其他的我测试为 当时分秒任意为0时省略

    formatter.zeroFormattingBehavior = .pad

    formatter.allowedUnits = NSCalendar.Unit(rawValue: NSCalendar.Unit.hour.rawValue | NSCalendar.Unit.minute.rawValue | NSCalendar.Unit.second.rawValue)

    //.positional 是数字:数字:数字格式 其他选项我测试为中文格式

    formatter.unitsStyle=DateComponentsFormatter.UnitsStyle.positional

    returnformatter.string(from:TimeInterval(second)) ??""

}


8 :  UIWindow 上面添加控件


func addFullScreenView(sureView:UIView){

    let view =UIApplication.shared.keyWindow!

    view .addSubview(sureView)

}

相关文章

网友评论

      本文标题:IOS swift 学习记录

      本文链接:https://www.haomeiwen.com/subject/heaebktx.html