2014-01-08 3 views
4

풍부한 콘텐츠를 표시 할 수있는 UILabel을 사용하려고합니다. 이를 위해 UILabelattributedText 속성을 사용하고 NSHTMLTextDocumentType으로 할당하는 NSAttributedString을 사용합니다.UILabel에서 단락 주위에 테두리를 그리는 방법은 무엇입니까?

한 가지 형식의 서식은 단락 (따옴표) 주위에 테두리를 그립니다. 글꼴, 굵게, 기울임 꼴 등의 일반 텍스트 서식은 정상적으로 작동하는 것으로 보이지만 테두리와 같은 CSS 속성을 사용하면 예상대로 작동하지 않습니다. 그림보기; background-color 속성 만 표시됩니다.

UILabel with HTML

이 UILabel의의 attributedText 속성입니다 :

<style> 
    body{font:10pt Verdana;} .quote {background-color:#ddd;border:1px solid #aaa;} 
</style> 
<body> 
    <div class="quote">This is a quote</div> 
    <br/> 
    Bla bla bla 
</body> 

는 내가 기대하는 것은 UILabel의 내 첫 문장/단락 주위에 테두리입니다 - 전체가 아닌 UILabel의 주변에 테두리.

텍스트 배경이 표시되지만 예상되는 테두리는 표시되지 않습니다. 이것을 달성 할 수 있습니까? 내 UITableView을 신속하게 유지하려면 UILabel을 사용하고 싶습니다.

+0

blockquote 및 q 요소가있는 경우 왜 따옴표로 div 또는 단락을 사용합니까? – cimmanon

+0

공정한 점이지만 견적 마크 업에 사용하는 태그와 상관없이 서식이 작동하지 않습니다. – pojo

+0

NSAttributedString은 CSS 테두리 속성을 지원하지 않습니다. NSattributed 문자열은 웹 뷰 링크가 아닌 리치 텍스트 형식의 내용 만 표시합니다. – CoolMonster

답변

3

나는이이 SDK에서 구현되는 잘 모르는 것 같아요. 의 서브 클래스에서

UILabel 당신은 서브 텍스트를 표시입니다 계산하는 등 boundingRectWithSize:options:context:sizeNSAttributedString의 크기 조정 방법을 사용하고 drawTextInRect:의 재정에 테두리를 그릴 수 있습니다. 앞의 텍스트와 추가 된 하위 텍스트의 프레임을 계산 한 다음 그 차이를 가져 와서 필요한 테두리 프레임을 추론 할 수 있습니다.

또 다른 옵션은 사용자 정의 설정하는 것입니다 NSAttributedStrings에 속성, 뭔가 애플은 공개적으로 Apple's overview에서, 장려 :

이 당신은 당신이 의 범위에 원하는 속성 이름/값 쌍에 할당 할 수 있습니다

문자를-가 최대입니다 응용 프로그램에서 사용자 정의 속성 을 해석 할 수 있습니다 (속성이있는 문자열 프로그래밍 안내서 참조).

그런 NSAttributedStrings의 서브 클래스에서, 같은 drawInRect:로 그리기 방법을 무시하고 사용자 정의 속성에 대한 최초의 제안에 따라 유사한 사용자 정의 그리기 로직을 ​​구현, 그렇지 않으면 슈퍼에 의존하고 있습니다.

+0

감사합니다. 나는 너의 제안을 줄 것이다. – pojo

+0

NSAttributedString을 클래스 클러스터로 서브 클래 싱하는 것은 좋지 않습니다. – Ryan

1

iOS에서 제공된 문자열은 윤곽선을 지원하지 않습니다. iOS 또는 Mac OS에서 웹보기 외부에서이 문제를 본 적이 있습니까?

+0

당신이 텍스트의 윤곽을 의미한다면, 그것은 제가 여기서 요구하는 것이 아닙니다. 하지만 NSAttributedString + NSHTMLTextDocumentType *이 지원하는 기능에 대한 정보를 찾기가 어렵습니다. – pojo

-1

:과 선언 사이에 공백을 추가하십시오. 일부 통역 인은 이것을 선호합니다.

body { 
    font: 10pt Verdana; 
} 

.quote { 
    background-color: #ddd; 
    border: 1px solid #aaa; 
} 
+0

고마워,하지만 아무런 차이가 없어. – pojo

-1

또한이 같은 글꼴 속성을 클래스에 사업부를 추가하고 추가 할 수 있습니다 :

body { 
    font-family: Verdana; 
} 

div.quote { 
    background-color: #ddd; 
    border: 1px solid #aaa; 
    font-size: 10pt; 
} 
0

나는 그것이 테두리를 보여줍니다 내 디버거에 코드를 붙여 넣을 때. 색상을 밝게 변경하려고 시도 했습니까? 또는 기본 CSS의 테두리 속성을 덮어 쓰는 다른 CSS가있을 수 있습니다. 그렇다면 ! 중요 태그를 사용하여 CSS 대신 HTML 태그를 테스트하거나 인라인하십시오.

+0

어떤 디버거를 사용하고 있습니까? HTML 마크 업이 브라우저에서 작동하고 있다는 것을 알고 있습니다. 그 질문에 관한 것이 아닙니다. 그것은 iOS의 UILabel 구성 요소에서 작동하도록 만드는 방법입니다. – pojo

+0

미안하지만 그냥 CSS라고 생각했습니다. 그 때 무시하십시오. –

4

-[NSAttributedString initWithData:options:documentAttributes:error:]을 사용하고 있습니까?

귀하의 문제는 이러한 제한에서 올 수 있습니다 :

는 HTML 수입 메커니즘 (등등입니다 , 텍스트 스타일, 색상 등) 가격 인하 같은 것을 구현하기위한 의미가 아닌 일반 HTML 가져 오기 위해.

https://developer.apple.com/library/ios/documentation/uikit/reference/NSAttributedString_UIKit_Additions/Reference/Reference.html#//apple_ref/occ/instm/NSAttributedString/initWithData:options:documentAttributes:error

: 당신이 비록 적어도 일반적으로 두 가지 옵션이 있습니다 아이폰 OS 7로 제한 할 수있는 경우에도

+0

고마워요! 어쨌든 나는 그 문서에서 그 발언을 놓쳤다. – pojo

관련 문제