Coder Social home page Coder Social logo

loopeer / attributedstringwrapper Goto Github PK

View Code? Open in Web Editor NEW
16.0 12.0 1.0 325 KB

a simple packaging for NSAttributedString to make the developers easy to use

License: MIT License

Swift 82.24% Ruby 12.53% Objective-C 5.23%
nsattributedstring carthage cocoapods cocoa swift nsmutableattributedstring nsmutableparagraphstyle ios

attributedstringwrapper's Introduction

AttributedStringWrapper

AttributedStringWrapper

Xcode 8.3+ iOS 8.0+ Swift 3.1+ Version Carthage compatible

AttributedStringWrapper is a simple packaging for NSAttributedString to make the developers easy to use 

Overview

AttributedStringWrapper is base on String extension, converted into RawRepresentable protocal in order to solve the question of Objective-C namespace. So it looks a bit strange, if you have a better way, please contact me

Before, you may like me

extension UILabel {
    convenience init(frame: CGRect = .zero, attributedText: String, textColor: UIColor, font: UIFont, lineSpacing: CGFloat) {
        self.init(frame: frame)
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.lineSpacing = lineSpacing
        paragraphStyle.lineBreakMode = .byTruncatingTail
        let attrStr = NSAttributedString(string: attributedText, attributes: [NSParagraphStyleAttributeName: paragraphStyle,
                                                                              NSFontAttributeName: font,
                                                                              NSForegroundColorAttributeName: textColor])
        self.attributedText = attrStr
    }
}
        let attr = NSMutableAttributedString(string: content)
        let paragrap = NSParagraphStyle()
        paragrap.lineSpacing = 8.0
        paragrap.alignment = .center
        attr.addAttributes([NSParagraphStyle: paragrap], range: NSMakeRange(0, attr.length))
        attr.addAttributes([NSFontAttributeName: UIFont.systemFont(ofSize: 17)], range: NSMakeRange(0, attr.length))
        let shadow = NSShadow()
        shadow.shadowColor = UIColor.red
        shadow.shadowOffset = CGSize(width: 3, height: 3)
        shadow.shadowBlurRadius = 2.0
        attr.addAttributes([NSShadowAttributeName: NSShadow], range: NSMakeRange(0, attr.length))
        label6.attributedText = attr

After:

// 1. shadow: you can set range, default allRange
label1.attributedText = content.toAttributed.shadow {
    $0.shadowColor = UIColor.red
    $0.shadowOffset = CGSize(width: 3, height: 3)
    $0.shadowBlurRadius = 2.0
}.rawValue


// 2. paragraphStyle: you can set range, default allRange

let attrText2 = content.toAttributed.paragraph {
    $0.alignment = .center
    $0.lineSpacing = 8.0
}.font(UIFont.systemFont(ofSize: 15))

label2.attributedText = attrText2.rawValue
print(attrText2.getHeight(by: screenW - 20))


// 3. underLine:  you can set range, default allRange
label3.attributedText = content.toAttributed.underLine(style: [.styleDouble, .patternDot], color: UIColor.red).rawValue

// 4. font, foregroundColor
textField.attributedPlaceholder = "Please enter the phone number".toAttributed.font(.systemFont(ofSize: 15))
                                                                 .foregroundColor(.red).rawValue

// 5. Even you can do it
label6.attributedText = content.toAttributed
            .underLine(style: [.styleSingle, .patternDot], color: .red, range: NSMakeRange(0, 5))
            .font(.systemFont(ofSize: 18), range: NSMakeRange(5, 5))
            .backgroundColor(.blue, range: NSMakeRange(10, 5))
            .foregroundColor(.purple, range: NSMakeRange(15, 5))
            .baselineOffset(value: 5, range: NSMakeRange(20, 5))
            .obliqueness(angle: 0.5, range: NSMakeRange(25, 5))
            .kern(padding: 0.3, range: NSMakeRange(30, 5))
            .expansion(value: 0.3, range: NSMakeRange(35, 5))
            .stroke(color: .green, width: 3, range: NSMakeRange(40, 5))
            .textEffect(range: NSMakeRange(50, 5))
            .shadow{
                $0.shadowColor = UIColor.red
                $0.shadowOffset = CGSize(width: 3, height: 3)
                $0.shadowBlurRadius = 2.0
            }.rawValue

// 6. “+”
label7.attributedText = ("昵称: ".toAttributed.font(UIFont.systemFont(ofSize: 18)).foregroundColor(UIColor.red) +
                         "loopeer".toAttributed.font(UIFont.systemFont(ofSize: 13)).underLine(style: [.styleSingle])).rawValue

demo

Installation

1. CocoaPods

CocoaPods is a dependency manager for Cocoa projects.

Specify AttributedStringWrapper into your project's Podfile:

# source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.0'
use_frameworks!

target '<Your App Target>' do
  #swift 3.x
  pod 'AttributedStringWrapper', '~> 1.0.2'  
  
  #swift 4.0
  pod 'AttributedStringWrapper', '~> 1.0.3'
 
end

Then run the following command:

$ pod install

2. Carthage

Carthage is a simple, decentralized dependency manager for Cocoa.

Specify AttributedStringWrapper into your project's Carthage:

github "loopeer/AttributedStringWrapper" ~> 1.0.2

attributedstringwrapper's People

Contributors

gaoyuexit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

carabina

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.