NSAttributed String을 긍정적인 마음으로 처리하기 위해 프로그램 라이브러리를 만들었습니다.

8668 단어 SwiftiOS

전주


NSAttributedString에 문자를 장식하고 싶다면 다음과 같은 설명이 있다.
let label = UILabel(frame: CGRectMake(0,0,100,50))
let str1 = NSMutableAttributedString(
    string: "Hoge", 
    attributes: [
       NSForegroundColorAttributeName: UIColor.redColor(),
       NSFontAttributeName: UIFont.systemFontOfSize(14)
    ]
)
let str2 = NSMutableAttributedString(
    string: "Fuga", 
    attributes: [
       NSForegroundColorAttributeName: UIColor.blueColor(),
       NSFontAttributeName: UIFont(name: "Helvetica", size: 17)!
    ]
)
str1.appendAttributedString(str2)
label.attributedText = str1
이 기술 방법에 대해 나는 좀 까다롭다고 느낀다.
  • attributes로 설정할 수 있는 것은 [string:AnyObject]이기 때문에 상수명과 값으로 설정할 수 있는 유형을 미리 기억하거나 조사해야 한다
  • 단순히 텍스트를 UILAbel 및 UITTextView에 배치하는 것에 비해 코드량이 팽창
  • 이후에 다른 사람이 쓴 코드를 다시 읽거나 읽을 때 어떻게 표시할지 바로 상상할 수 없음
  • 업무 때문에 사이트 스타일의 장식 UI가 요구되기 쉽지만 이럴 때는 기본적으로 NSAttributed String을 사용한다.자주 사용하면서도 잘 못 한다는 의식을 갖고 있었고, "가능한 안 쓰려고 했는데..."이렇게 생각하면서 가까스로 코드를 썼다.이런 우울한 마음에서 해방되기 위해 NSAttributeString을 생성하는 프로그램 라이브러리를 개발했다.

    사용법


    프로그램 라이브러리에 같은 텍스트를 표시할 때 다음과 같습니다.
    let label = UILabel(frame: CGRectMake(0,0,100,50))
    label.attributedText = "Hoge".stylize().color(.redColor) .size(14).attr +
                           "Fuga".stylize().color(.blueColor).size(17).font(.Helvetica).attr
    
    메소드 체인에서 문자열에 스타일을 적용하면 최종 호칭 "attr"가 NSAttributedString으로 변환됩니다.NSAttributedString은 "+"로 연결할 수 있기 때문에 다양한 스타일에 문자열을 더한 느낌으로 쓸 수 있습니다.
    범위를 지정할 수도 있습니다. 방금 문자열은
    let label = UILabel(frame: CGRectMake(0,0,100,50))
    label.attributedText = "HogeFuga".stylize()
                             .range(0..<4)       .color(.redColor) .size(14)
                             .range(4..<UInt.max).color(.blueColor).size(17).font(.Helvetica)
                             .attr
    
    다 쓸 수 있어요.

    특징.

  • 방법의 명칭과 파라미터에 따라 어떤 속성을 지정할 수 있는지, 값에 무엇을 넣어야 하는지 명확히 한다
  • 메소드 체인을 사용하여 사고의 흐름을 따라 스타일을 선형적으로 지정할 수 있기 때문에 쓰기 쉽다
  • 문자열과 속성을 NSAttributedString에 전달하는 것이 아니라 문자열에 속성을 적용할 수 있어 읽기 쉽다
  • 이루어지다


    인터페이스 부분은 기본적으로 Builder Pattern(Effective Java version이라고 함)에서 제작되었습니다.
    또 이 반에서는 상태에 따라 행동거지를 바꾸고 싶어요.
    Phantom Type이라는 기법을 당시의 참고로 이용했다.
  • 범위를 선택한 경우 Attribute
  • 를 한 개 이상 적용해야 합니다.
  • Attribute를 적용한 후 NSAttributedString을 변환하거나 새 범위를 선택할 수 있음
  • 나는 @taketo1024"Swift Phantom Type(유령형)"를 사용할 수 있을 것 같아서 유형 매개 변수에 따라 명칭을 나누기로 했다.
    먼저 stylize()를 스트링으로 꼭 불러야 하는 이유는 이쪽에서 준비한 반으로 먼저 전환한 뒤 그 안에서 준비한 다양한 방법을 부르고 싶어서다.또 최종적으로 NSAttributed String을 만들기 위해서는 attra를 명확하게 불러야 한다.결국 이 라이브러리의 역할은 String에서 NSAttributed String까지의 제작이다.

    최후


    버그도 있을 수 있지만 NSAttributed String에 대해 자신과 같은 고통을 느끼는 사람은 반드시 사용하세요.모두가 기분 좋게 프로그램을 쓸 수 있는 힘이 됐으면 좋겠어요.

    좋은 웹페이지 즐겨찾기