일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Number
- VISTA
- 볼링
- Objective-C
- 윈도구7
- Mobile
- 윈도구
- windows7
- c#
- 오브젝티브C
- ObjectiveC
- 링크
- cagr48com
- 설치
- WebService
- 맥
- iPhone
- java
- 아이폰
- 애플
- install
- 아이맥
- 7932
- 퇴사
- 형식
- windows
- WSDL
- screen
- mac
- 윈도우즈7
Archives
- Today
- Total
A colossal Dreamer: GR鐵塔-天生我材
[아이폰:오브젝티브C] 레이블 세로정렬 Top(UILabel vertical Alignment) 본문
나를 귀찮게 하는 아이폰의 api 부재
레이블에 대해서 문자의 가로정렬은 쉽게 되지만, 세로정렬은 sdk 의 속성을
눈 씻고 찾아봐도 찾을 수 없어 구걸신에게 또 구걸하여 아래와 같은 코드를 얻었다.
개념은 NSString의 sizeWithFont 메소드를 사용하여 실제로 그려질 크기를 손쉽게 구한 후에
이 값을 UILabel의 frame에 대입해주는 것이다.
아래 예제는 top 정렬 뿐 아니라 bottom 정렬도 가능한 예제이다.
참조: http://discussions.apple.com/thread.jspa?messageID=8322622
- (void)setUILabel:(UILabel *)myLabel withMaxFrame:(CGRect)maxFrame withText:(NSString *)theText usingVerticalAlign:(int)vertAlign {
CGSize stringSize = [theText sizeWithFont:myLabel.font constrainedToSize:maxFrame.size lineBreakMode:myLabel.lineBreakMode];
switch (vertAlign) {
case 0: // vertical align = top
myLabel.frame = CGRectMake(myLabel.frame.origin.x,
myLabel.frame.origin.y,
myLabel.frame.size.width,
stringSize.height
);
break;
case 1: // vertical align = middle
// don't do anything, lines will be placed in vertical middle by default
break;
case 2: // vertical align = bottom
myLabel.frame = CGRectMake(myLabel.frame.origin.x,
(myLabel.frame.origin.y + myLabel.frame.size.height) - stringSize.height,
myLabel.frame.size.width,
stringSize.height
);
break;
}
myLabel.text = theText;
}
레이블에 대해서 문자의 가로정렬은 쉽게 되지만, 세로정렬은 sdk 의 속성을
눈 씻고 찾아봐도 찾을 수 없어 구걸신에게 또 구걸하여 아래와 같은 코드를 얻었다.
개념은 NSString의 sizeWithFont 메소드를 사용하여 실제로 그려질 크기를 손쉽게 구한 후에
이 값을 UILabel의 frame에 대입해주는 것이다.
아래 예제는 top 정렬 뿐 아니라 bottom 정렬도 가능한 예제이다.
참조: http://discussions.apple.com/thread.jspa?messageID=8322622
- (void)setUILabel:(UILabel *)myLabel withMaxFrame:(CGRect)maxFrame withText:(NSString *)theText usingVerticalAlign:(int)vertAlign {
CGSize stringSize = [theText sizeWithFont:myLabel.font constrainedToSize:maxFrame.size lineBreakMode:myLabel.lineBreakMode];
switch (vertAlign) {
case 0: // vertical align = top
myLabel.frame = CGRectMake(myLabel.frame.origin.x,
myLabel.frame.origin.y,
myLabel.frame.size.width,
stringSize.height
);
break;
case 1: // vertical align = middle
// don't do anything, lines will be placed in vertical middle by default
break;
case 2: // vertical align = bottom
myLabel.frame = CGRectMake(myLabel.frame.origin.x,
(myLabel.frame.origin.y + myLabel.frame.size.height) - stringSize.height,
myLabel.frame.size.width,
stringSize.height
);
break;
}
myLabel.text = theText;
}
'Development > 아이폰' 카테고리의 다른 글
[아이폰:오브젝티브C] UIWebView와 APP간의 통신(communication) (0) | 2010.03.03 |
---|---|
[아이폰:오브젝티브C] 어플에서 상태표시줄 바꾸기(Change Status Bar) (2) | 2010.02.25 |
[아이폰:오브젝티브C] 앞뒤 공백문자 제거(Trim white space) (0) | 2010.02.19 |
[아이폰:오브젝티브C] 1,000 과 같이 3자리마다 콤마(,) 추가 (0) | 2010.02.17 |
[아이폰:Xcode] Preprocessor Definitions (0) | 2010.02.04 |