2017-03-23 1 views
0

저는 매우입니다. 목표 C로 넘어 갔지만 기존 앱의 소스 코드를보고 있으므로 여기를 자세히 살펴볼 수 있습니다.중간에 텍스트가있는 가로선을 만드는 방법은 무엇입니까?

나는 이런 식으로 뭔가 만들려고 해요 :

-------------- 또는 --------------

... 대시 대신 단색 수평선 만 사용하십시오.

나는이로 정의 된 "또는"텍스트가 : 표시 얻을 "또는"중대 작업을하지만 난 어떻게 양쪽에있는 수평선을 얻는 아무 생각이 있어요

_orLabel = ^{ 
    UILabel* label = [[UILabel alloc] init]; 

    label.translatesAutoresizingMaskIntoConstraints = NO; 
    label.textColor = [UIColor blackColor]; 
    label.font = [UIFont mainFontWithSize:[UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline].pointSize]; 
    label.adjustsFontSizeToFitWidth = YES; 
    label.textAlignment = NSTextAlignmentCenter; 
    label.text = NSLocalizedString(@"or", nil); 

    [view addSubview:label]; 

    return label; 
}(); 

.

답변

1

저는 UILabel을 서브 클래스 화하고 drawTextInRect:을 오버라이드합니다. 가장 쉬운 방법은 super으로 전화하여 텍스트가 그려 지도록하는 것입니다. 이제 그래픽 컨텍스트 (CGContext)에 있으므로 일반 Quartz 드로잉 명령을 사용하여 수평선을 그릴 수 있습니다.

+0

명령을 그리기에 대한 자세한 내 책을 참조하십시오 http://www.apeth.com/iOSBook/ch15.html#_paths_and_drawing – matt

+0

또한 여기에'drawTextInRect를 오버라이드 (override)의 실제 예입니다 : '; 목표는 다릅니다 (즉, 레이블 주위에 상자를 넣으려는) 아이디어는 완전히 동일합니다. http://www.apeth.com/iOSBook/ch10.html#_subclassing 시작하는 단락까지 아래로 스크롤하십시오. 예를 들어 UILabel의 하위 클래스 인 내 앱 중 하나의 예제입니다. – matt

+0

물론 더 나아가서 직접 이미지를 그릴 수 있습니다. 라인, 단어 "or"및 라인을 표시하고 UIImage 또는 뷰의 자체 드로잉으로 표시 할 수 있습니다. 이처럼 간단하게 UILabel이 필요하지는 않습니다. – matt

0

가장 간단한 방법은 실선을 줄 특정 유니 코드 문자를 사용하는 것입니다.

label.text = @"───────── or ─────────"; 

해당 텍스트는 일련의 "BOX DRAWINGS LIGHT HORIZONTAL"문자 (U + 2500)를 사용하고 있습니다.

+0

일부 경우에는 작동하지만 해킹 일종의 폭 제한이있는 경우 문자가 임의로 잘리지 않으므로 비례 글꼴로 줄의 길이가 다른지 확인하기가 어려울 수 있습니다. 모든 글꼴에 상자 그리기 문자가있는 것은 아닙니다. –

0

IB를 사용하여 레이블의 각면에보기를 추가합니다. 뷰는 검정색 배경에 1 또는 2의 높이를 확인하고 라벨과 화면 상황에 적절하게 크기를 만들기 위해 자동 레이아웃 사용

  1. 만들기보기 # 1 화면의 왼쪽 가장자리에 고정 라벨의 오른쪽.
  2. 보기 # 2를 화면의 오른쪽 가장자리와 레이블의 왼쪽에 고정하십시오.
  3. 두 개의보기를 만들고 레이블의 세로 중심이 같습니다.
관련 문제