Swift에서 UIButton 및 UILabel의 텍스트를 어떻게 회전 할 수 있습니까?
UIButton및에 대한 텍스트를 어떻게 회전 할 수 UILabel있습니까? 90도, 180도.
참고 : 이것을 중복으로 표시하기 전에 의도적으로 내 질문을이 질문의 Swift 버전으로 모델링하고 있습니다. Objective-C에서 UIButton 및 UILabel의 텍스트를 어떻게 회전 할 수 있습니까?
이 답변 과 비슷한 형식으로 답변을 입력하고 있습니다.
다음은 원래 레이블입니다.

시계 방향으로 90도 회전 :
yourLabelName.transform = CGAffineTransform(rotationAngle: CGFloat.pi / 2)

180도 회전 :
yourLabelName.transform = CGAffineTransform(rotationAngle: CGFloat.pi)

시계 반대 방향으로 90도 회전 :
yourLabelName.transform = CGAffineTransform(rotationAngle: -CGFloat.pi / 2)

버튼을 회전하는 방법도 동일합니다. 고맙게도 터치 이벤트도 회전되므로 추가 작업을 수행하지 않고도 새 경계에서 버튼을 클릭 할 수 있습니다.
yourButtonName.transform = CGAffineTransform(rotationAngle: CGFloat.pi / 2)
메모:
CGAffineTransform에 대한 문서
기본 형식은 CGAffineTransform(rotationAngle: CGFloat)어디 rotationAngle라디안에, 학위 없습니다.
완전한 원 (360도)에는 2π 라디안이 있습니다. Swift는 유용한 상수를 포함합니다 CGFloat.pi.
CGFloat.pi= π = 180도CGFloat.pi / 2= π / 2 = 90도
자동 레이아웃 :
자동 레이아웃은 회전 된보기에서 작동하지 않습니다. ( 이유에 대한 설명 은 프레임 대 경계 를 참조하십시오 .)이 문제는 사용자 정의보기를 작성하여 해결할 수 있습니다. 이 답변 은에 대해 수행하는 방법을 보여 UITextView주지만 레이블 또는 버튼에 대한 동일한 기본 개념입니다. ( CGAffineTransformScale텍스트를 미러링 할 필요가 없기 때문에 해당 답변 에서 줄 을 제거 해야합니다.)
관련
이 작업을 많이하면 연장을 원하지 않을 것입니다. 또한 뷰를 0-360도 회전 할 수 있습니다.
extension UIView {
func rotate(degrees: CGFloat) {
rotate(radians: CGFloat.pi * degrees / 180.0)
}
func rotate(radians: CGFloat) {
self.transform = CGAffineTransform(rotationAngle: radians)
}
}
그런 다음 뷰에서 간단히 회전을 호출 할 수 있습니다.
myView.rotate(degrees: 90)
빠른
시계 방향으로 90도 회전 :
var rotateLabel: UILabel = UILabel(frame: CGRectMake(100, 0, 28, 159))
rotateLabel.textAlignment = .Right
rotateLabel.text = "Hello!"
self.view.addSubview(rotateLabel)
rotateLabel.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2))
rotateLabel.frame = CGRectMake(100, 0, 28, 159)
시계 반대 방향으로 90도 회전 :
var rotateLabel: UILabel = UILabel(frame: CGRectMake(100, 0, 28, 159))
rotateLabel.textAlignment = .Right
rotateLabel.text = "Hello!"
self.view.addSubview(rotateLabel)
rotateLabel.transform = CGAffineTransformMakeRotation(CGFloat(-M_PI_2))
rotateLabel.frame = CGRectMake(100, 0, 28, 159)
각도 옵션과 시계 반대 방향으로 확장을 사용하는 것이 좋습니다.
func rotate(degrees: Int , clockwise: Bool)
{
let x = 180 / degrees
if (clockwise)
{
self.transform = CGAffineTransform(rotationAngle: CGFloat.pi / CGFloat(x))
}
else
{
self.transform = CGAffineTransform(rotationAngle: -CGFloat.pi / CGFloat(x))
}
}
나는 그것을 사용 extension UILabel {}하지만 그것은 분명히 당신에게 달려 있습니다
Ananthu R Krishnan의 답변을 Swift 3.1에 맞게 수정했습니다.
시계 반대 방향으로 90도 회전 :
let rotateLabel: UILabel = UILabel(frame: CGRect(x:15, y:66, width:28, height:159))
rotateLabel.textAlignment = .right
rotateLabel.text = "TEXT"
self.view.addSubview(rotateLabel)
rotateLabel.transform = CGAffineTransform(rotationAngle: CGFloat(-(Double.pi / 2.0)))
rotateLabel.frame = CGRect(x:15, y:66, width:28, height:159)
'IT TIP' 카테고리의 다른 글
| 두 팬더 열의 문자열 연결 (0) | 2020.11.25 |
|---|---|
| Android에서 파일에 대한 MD5 체크섬을 생성하는 방법은 무엇입니까? (0) | 2020.11.25 |
| 로드 할 파일이 없습니다 — rubygems (LoadError) (0) | 2020.11.25 |
| 어쨌든 사전을 String으로 편리하게 변환하는 것이 있습니까? (0) | 2020.11.25 |
| EditText에서 키보드 비활성화 (0) | 2020.11.25 |