[swift] 요소를 화면 폭의 중앙에 배치하는 방법
오프닝
화면을 만들 때storyboard를 사용하지만 문자열을 화면 너비 중앙에 배치하고 싶을 때 요소를 화면 너비로 일일이 확장한다
XXX.textAlignment = .center
이렇게 하는 것도 약간 시뮬레이션이 있어서 보기 싫다.따라서 우리는 요소에 설정된 문자열의 길이에 따라 요소의 폭을 확대하고 화면 폭의 중앙에 설정할 수 있는 논리를 고려했다.
(찾아보면 찾을 줄 알았는데 전혀 찾을 수가 없어요. 찾는 방법이 안 좋아요?)
개발 환경
터미널: MacBook Pro/MacOS10.14.5(Mojave)
Xcode:10.2.1
Swift:5
화면 이미지
이 문자열을 화면 너비의 중앙에 표시
논리
다음 논리를 통해 알 수 있듯이 (화면 너비 - 문자열 너비)/2 값을 UILAbel의 표시 위치(X축, 왼쪽 위)로 설정합니다.
ViewController.swift
func editLabel() {
let width = Float(UIScreen.main.bounds.size.width)
lblTitleLat.text = "この文字列を画面幅の中央に表示"
lblTitleLat.textColor = .black
lblTitleLat.font = UIFont.boldSystemFont(ofSize: 20)
// 文字列をUILabelに中央揃えで表示(一応)
lblTitleLat.textAlignment = .center
// 文字列の長さに合わせて、UILabel自体の大きさを調整
lblTitleLat.sizeToFit()
// ラベルの表示位置(X軸、左上)の値を算出
let widthGap = (width - Float(lblTitleLat.frame.width)) / 2
lblTitleLat.frame = CGRect.init(x: CGFloat(widthGap),
y: lblTitleLat.frame.minY,
width: lblTitleLat.frame.width,
height: lblTitleLat.frame.height)
// 下の行にも同じ処理を入れてみただけ。
lblLat.text = "文字列幅:" + (NSString(format: "%.2f", lblTitleLat.frame.width) as String)
lblLat.sizeToFit()
let widthGap2 = (width - Float(lblLat.frame.width)) / 2
lblLat.frame = CGRect.init(x: CGFloat(widthGap2),
y: lblLat.frame.minY,
width: lblLat.frame.width,
height: lblLat.frame.height)
}
푹 빠지다
거기에 푹 빠졌다기보다 다른 사람들이 얼마나 많이 했다고 생각하기 때문에 의외로 샘플을 찾지 못한 것 자체가 힘들었다.
또한 수학이 매우 번거롭기 때문에'(화면 너비-문자열의 너비)/2'의 값을 UILAbel의 표시 위치(X축, 왼쪽 위)로 설정하는 방법론을 찾기 어렵다.
어쨌든 예상대로 할 수 있어서 다행이다.
Reference
이 문제에 관하여([swift] 요소를 화면 폭의 중앙에 배치하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ydzum1123/items/be068056436da090b320텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)