2014-09-23 5 views
1

저는 iOS 7.1로 설정된 baseSDK를 사용하여 여러 iOS 8 디바이스에서 내 프로젝트를 빌드했습니다. 아쉽게도 NSMutableAttributedString의 관련 인스턴스에 속성으로 추가 된 모든 NSTextAttachment 이미지는 iOS 8 기기 및 iOS 8 시뮬레이터에서 숨겨집니다 (7.1 및 iOS 7.1 시뮬레이터가있는 기기에서 계속 표시됨). 수퍼 뷰 내의 이러한 문자열에 대한 프레임은 이미지가있는 것처럼 설정되지만 이미지 자체는 보이지 않거나 렌더링되지 않습니다.NSTextAttachment 이미지가 iOS 8 디바이스 (iOS7.1 SDK 포함)에 표시되지 않음

누군가 다른 사람이 iOS 8에 표시되지 않는 텍스트 첨부 파일 문제에 부딪 혔습니까? 그렇다면 해결 방법이 있습니까? 그렇지 않다면 내 코드에 문제가 있습니까 (아래에 붙여 넣기)? 이 인스턴스는 특히 UIButton에 대한 속성이있는 제목을 설정하지만 동일한 동작을 표시하는 간단한 UILabels 인 첨부 파일이있는 다른 인스턴스가 있습니다.

NSMutableAttributedString *attrButtonTitle = [[NSMutableAttributedString alloc] initWithString:@"Let's go!"]; 
NSTextAttachment *doubleArrowIcon = [[NSTextAttachment alloc] initWithData:nil ofType:nil]; 
doubleArrowIcon.image = [UIImage imageNamed:@"double-arrows"]; 
[attrButtonTitle appendAttributedString:[[NSAttributedString alloc] initWithString:@" " attributes:@{NSAttachmentAttributeName : doubleArrowIcon, NSBaselineOffsetAttributeName : @(-2)}]]; 
[self.nextButton setAttributedTitle:attrButtonTitle forState:UIControlStateNormal]; 

참고 : 가능한 경우 설명하기 위해 이미지를 게시 하겠지만 가능한 최소한의 오버플로 평판은 없습니다.

답변

2

위의 코드가 7.1 SDK로 컴파일 할 때 iOS8 장치에 이미지를 표시하지 않는 이유는 여전히 확실하지 않지만 해결 방법을 찾았습니다. 작업을 수행 할 때까지 텍스트 첨부 파일이있는 NSMutableAttributedString에 대해 다른 초기화 메소드를 시도했습니다. 아래 코드 :

NSTextAttachment *doubleArrowIcon = [[NSTextAttachment alloc] initWithData:nil ofType:nil]; 
doubleArrowIcon.image = [UIImage imageNamed:@"double-arrows"]; 

NSAttributedString *textAttachment = [NSAttributedString attributedStringWithAttachment:doubleArrowIcon]; 

NSMutableAttributedString *mutableTextAttachment = [[NSMutableAttributedString alloc] initWithAttributedString:textAttachment]; 
[mutableTextAttachment addAttribute:NSBaselineOffsetAttributeName value:[NSNumber numberWithInt:-2] range:NSMakeRange(0, [textAttachment length]) ]; 
[attrButtonTitle appendAttributedString:mutableTextAttachment]; 
0

좋은 초기화 후에도 이미지가 여전히 표시되지 않으면 라벨/텍스트의 lineBreakMode에 문제가있는 것입니다. 이미지는 lineBreak로 자르거나자를 수 없습니다.

당신의 코드에

yourlabel.text.lineBreakMode = NSLineBreakByClipping; 

를 추가