YAPP-Github / 24th-App-Team-3-iOS

2 stars 0 forks source link

[Feature] #37 폰트에 따른 letterSpacing, lineHeight값 조절을 위한 Extention함수 구현 #38

Open dlrjswns opened 1 week ago

dlrjswns commented 1 week ago

Describe

Works made

As-Is

기존 로직

let label = UILabel().then {
    $0.font = ENFont.H0
    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.lineHeightMultiple = 1.5

    let attributedString = NSAttributedString(
      string: "예시를 위한 라벨 텍스트",
      attributes: [
        .paragraphStyle: paragraphStyle
      ]
    )

    $0.attributedText = attributedString
}

To-BE

변경 로직

let krFontLabel = UILabel().then {
    $0.setAttributedText(font: KRFont.self, string: "KRFont가 적용된 예시 텍스트입니다.")
}

let enFontLabel = UILabel().then {
    $0.setAttributedText(font: ENFont.self, string: "ENFont가 적용된 예시 텍스트입니다.")
}
KRFont 적용하기 이전 스크린샷 KRFont 적용하기 이후 스크린샷

<적용전 코드>

let label = UILabel().then {
            $0.textColor = .black
            $0.numberOfLines = .max
            $0.text = """
                        테스트용 라벨입니다.
                        속성값 적용하지않은 텍스트입니다.
            """
}

<적용후 코드>

let label = UILabel().then {
            $0.textColor = .black
            $0.numberOfLines = .max
            $0.setAttributedText(font: KRFont.self, string:
                    """
                        테스트용 라벨입니다.
                        속성값 적용한 텍스트입니다.
                    """
            )
}
ENFont 적용하기 이전 스크린샷 ENFont 적용하기 이후 스크린샷

<적용전 코드>

let label = UILabel().then {
            $0.textColor = .black
            $0.numberOfLines = .max
            $0.text = """
                        Hello, This is test.
                        Text that does not apply attribute values.
            """
}

<적용후 코드>

let label = UILabel().then {
            $0.textColor = .black
            $0.numberOfLines = .max
            $0.setAttributedText(font: ENFont.self, string:
                    """
                        Hello, This is test.
                        Text that does apply attribute values.
                    """
            )
}

How to Test

Issues Resolved

References

letterSpacing 자간율 적용 참고

dlrjswns commented 1 week ago

@ChoiysApple 일단 지금 폰트에 따라 알아서 조절해주는 함수와 직접 값을 조절해줄 수 있는 함수를 따로 만들어두었는데 한번 코드보시고 어떻게 하는게 좋을지 알려주세요 !!

ChoiysApple commented 1 week ago

지금 사용하기엔 좋지만, 추후에 불필요한 코드가 되거나 확장성이 좋지 않을것 같은 부분이 있네요. 공수가 많이 들거나 너무 어렵다 싶으면 추후에 리팩토링 해도 괜찮을 것 같아요

dlrjswns commented 12 hours ago

@ChoiysApple 기존 develop rebase에서 다시 푸시했고 PR메인에 attributed적용후, 적용전에 대한 스크린샷과 코드 첨부했습니다 !! 추가로 letterSpacing, lineHeight에 값 변경해서 제대로 동작하는것까지 확인했습니다 👍👍