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);
}
로그에 '얻을 수있는 모든 것'이 표시됩니다.
미리 감사드립니다.