티스토리 뷰
안녕하세요 :) Zedd입니다.
요새 바쁘고 그래서 ㅎㅎㅎㅎ...글을 잘 못썼어요 흐규
오늘은... UIButton과 UILabel에 이미지를 추가하는 법을...알아볼게요 :)
UIButton / UILabel에 이미지추가
● UIButton
굳이.. UIButton을 먼저 하는 이유는.....아주 감사하게도..
이미지를 Inspector에서 넣을 수 있죠
이미지를 하나 넣어볼까욘
이렇게 앞으로 이미지가 들어가게 되죠!!
※ 아ㅡㅡ나는 이미지 뒤에 넣고 싶은데..."일단" 두가지 방법이 있습니다.
1. Attribute Inspector의 View의 Semantic수정
지금 이런상태일건데, 저 Semantic을 누르고, Force Right-to-Left를 눌러주면
이렇게 이미지가 오른쪽으로 가게댐 ㅎ
2. Size Inspector에서 Image Insets수정
Button을 누르고 Size Inspector를 보시면
이런 Image Insets이 있습니다.
느낌이...오실텐데....저 각각 insets를 조절하면 이미지를 조정할 수 있습니다.
ㅎㅎ
저는 쓴다면, 위 두가지 방법을 합쳐서 씁니다. 그래서 "일단" 두가지 방법이 있다고 한거에요! 그냥 밑에 방법은..뭔가 미세한 조정이 필요할때? 그때 쓰는편...ㅎㅎ
Left이외에도 다른방향들도 있으니까, 뭐 이미지를 조금 위/아래로 보내고 싶다 이러시면 저 프로퍼티들에 적절한 값을 주시면 될 것 같아요 :)
뭐 이건 예시고..이런식으로 이미지를 버튼 안의 어느곳이든 보낼 수 있답니다 XD
이렇게 버튼은 끝~.~
다음은 UILabel.
● UILabel
네...UILabel은.......Inspector로 이미지 못넣음ㅋ.ㅎㅋㅎㅋㅎ...
그럼 Label에 어떻게 이미지를 넣느냐!!!!
여러분 한가지만 생각하세요.
"아 내가 Label에 Attribute를 주고싶다" 하면 무조건!!! NSMutableAttributedString를 하나 만들어야 합니다. 예전에 < Label의 글자 글자크기/폰트/색상 변경 방법 >글에서도 Label의 특정 문자에 뭐 볼드체나 폰트나 사이즈를 주고싶으면 NSMutableAttributedString를 만들어서 Label에 넣어줬었죠.
똑같아요.
1 2 3 4 5 6 7 8 | if let text = myLabel.text{ let attributedString = NSMutableAttributedString(string: text) ..... myLabel.attributedText = attributedString } | cs |
자..일단 3번째줄 코드에서 String을 하나 만드는데, NSMutableAttributedString을 만들죠. 이게 무슨뜻이냐? 아 ㅇㅇ 나는 Mutable(수정가능한) 속성을 추가한 String을 하나 만들어주면,
7번째줄에서 attributedText에 우리가 만든 attributedString을 넣어주죠.
그냥 우리 원래 myLabel.text = "스트링~~"이런거랑 똑같아요.
다만 NSMutableAttributedString에서는 말그대로 String에 Attribute를 줄 수 있게 됩니다.
서론이 길었지만, Label에 이미지 넣는 방법 == String에 이미지를 넣는 방법인것입니다.
이것은
1 | let imageAttachment = NSTextAttachment() | cs |
NSTextAttachment라는 클래스를 통해서 가능해요!
이 NSTextAttachment의 프로퍼티에는
image라는게 있어서.
1 2 | let imageAttachment = NSTextAttachment() imageAttachment.image = UIImage(named: "heart") | cs |
이렇게 image를 줄 수 있습니다.
아직 우리가 아까 만든 attributedString에는 아직 이미지가 추가가 안된상태겠죠?
그러니까 방금 만든 NSTextAttachment인스턴스를 attributedString에 "추가"해줘야 합니다.
1 | attributedString.append(NSAttributedString(attachment: imageAttachment)) | cs |
이렇게요. append니까 뒤에 차곡차곡 append하는 그런 느낌이죠?
그러니까 내 label에 text가 뭐 "안녕하세요 Zedd입니다"였으면
Zedd입니다 뒤에 이미지가 append된다는거에요.
이렇게 하고
1 | myLabel.attributedText = attributedString | cs |
를 해주면...!!!!
이렇게가 되는거죠. 만약에 아 나는 앞에 이미지를 놓고 싶다?
그러면 이미지를 "먼저" append하고 그 다음에 text를 append하면 되는겁니다.
1 2 3 4 5 6 | let attributedString = NSMutableAttributedString(string: "") let imageAttachment = NSTextAttachment() imageAttachment.image = UIImage(named: "heart") attributedString.append(NSAttributedString(attachment: imageAttachment)) attributedString.append(NSAttributedString(string: "안녕하세요 Zedd입니다.")) myLabel.attributedText = attributedString | cs |
이렇게하면, 이미지를 "먼저" append하고 string을 그 다음에 append한 것을 볼 수 있죠?
이렇게 하면 결과는??!
이렇게되는 걸 볼 수 있습니당 ㅎㅎ
간단..?하죠?
bounds라는 프로퍼티도 있어서 ㅎㅎ
1 | imageAttachment.bounds = CGRect(x: 0, y: 0, width: 60, height: 60) | cs |
이렇게 지정해주면 이미지 크기도 키울 수 있어요.
이러케 하지만 이렇게 bounds를 지정해줄 경우에는 sizeToFit()을 꼭!!!!!해주세요!!!
전체 코드도 첨부할게요 :)
1 2 3 4 5 6 7 8 | let attributedString = NSMutableAttributedString(string: "") let imageAttachment = NSTextAttachment() imageAttachment.image = UIImage(named: "heart") imageAttachment.bounds = CGRect(x: 0, y: 0, width: 60, height: 60) attributedString.append(NSAttributedString(attachment: imageAttachment)) attributedString.append(NSAttributedString(string: "안녕하세요 Zedd입니다.")) myLabel.attributedText = attributedString myLabel.sizeToFit() | cs |
UIButton에 비해 조금? 복잡하긴 하지만...(코드로 줘야하니까) 그렇게 어려운건 아니니까 ㅎㅎ..
아무튼 도움이 되었으면 좋겠어요 XD
'iOS' 카테고리의 다른 글
iOS ) shouldChangeCharactersIn range / NSRange (3) | 2018.02.16 |
---|---|
iOS ) UIButton에 이미지를 넣었는데 안보일때 (0) | 2018.02.10 |
iOS ) UIActivityViewController에 "Safari로 열기"추가 (2) | 2018.01.22 |
iOS ) Gesture Recognizer - Long Press (0) | 2018.01.16 |
iOS ) Custom Framework만들고 추가하는 법 (5) | 2018.01.13 |
- 회고
- 제이슨 파싱
- iOS delegate
- actor
- swift delegate
- 스위프트 문법
- swift tutorial
- 피아노
- swift 공부
- SwiftUI
- WidgetKit
- WKWebView
- IOS
- Combine
- np-complete
- WWDC
- Xcode
- Git
- UIBezierPath
- fastlane
- 스위프트
- swift sort
- Swift
- swift array
- ios 13
- github
- Accessibility
- FLUTTER
- np-hard
- swift3
- Total
- Today
- Yesterday