0

UIWebView 하위 클래스에서 stringByEvaluatingJavaScriptFromString :으로 전달할 자바 스크립트 메소드가 있습니다.UIWebView 소스 텍스트의 줄 간격을 변경하십시오.

var head = document.getElementsByTagName('head')[0], 
    style = document.createElement('style'), 
    rules = document.createTextNode('* { line-height: 20px !important; }'); 
style.type = 'text/css'; 
if(style.styleSheet) 
    style.styleSheet.cssText = rules.nodeValue; 
else style.appendChild(rules); 
head.appendChild(style); 

나는 문자열 ByEvaluatingJavaScriptFromString : 메서드에 추가했으며 픽셀 값을 지정하면 코드가 작동합니다. 아래 코드와 같은 변수를 사용하면 아무 것도하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

큰 커브를 사용하여 간격을 늘리거나 줄여야하는지 알려줍니다. 그런 다음 max와 min을 설정하고 행 높이를 변수로 사용합니다.

- (void)changeLineSpacingLarger:(BOOL)largerBool { 

    if (largerBool == YES) { // A+ 
     lineHeight = (lineHeight < 100) ? lineHeight +10 : lineHeight; 
    } 

    else if (largerBool == NO) { // A- 
     lineHeight = (lineHeight > 20) ? lineHeight -10 : lineHeight; 
    } 

    NSString *jsString = [[NSString alloc] initWithFormat:@"var head = document.getElementsByTagName('head')[0], style = document.createElement('style'), rules = document.createTextNode('* { line-height: '%d%%'px !important; }'); style.type = 'text/css'; if(style.styleSheet) style.styleSheet.cssText = rules.nodeValue; else style.appendChild(rules); head.appendChild(style);", lineHeight]; 
    [self stringByEvaluatingJavaScriptFromString:jsString]; 
} 

또한 현재의 줄 간격 값을 저장할 수있는 UIWebView의 didFinishLoading 위임 방법을 사용하고 있습니다.

- (void)updateLineSpacingValue { 
    NSString *jsString = [[NSString alloc] initWithFormat:@"var element = document.getElementsByTagName('h1')[0], style = window.getComputedStyle(element), lh = style.getPropertyValue('line-height'); return lh;", textFontSize]; 
    NSString *stringValue = [self stringByEvaluatingJavaScriptFromString:jsString]; 

    lineHeight = [stringValue intValue]; 

    NSLog(@"Line Height: %i", lineHeight); 
} 

로그에 '얻을 수있는 모든 것'이 표시됩니다.

미리 감사드립니다.

답변

0

먼저 line-height: '%d%%'pxline-height: '%d'px이어야합니다. 그렇지 않으면 소스가 렌더링 될 때 구문 분석되지 않는 line-height: '12%%'px과 같은 것을 빌드하게됩니다.


둘째, stringValue는 "12 픽셀"과 같이 될 것입니다, 그래서 당신은 직접 "픽셀"을 제거하지 않고 숫자로 변환 할 수 없습니다.

관련 문제