2012-10-22 23 views
0

我想在運行時將自定義字體添加到IOS應用程序,並在可編輯的textarea或帶有contentEditable =「on」的UIWebView中使用它。字體在運行時添加到IOS到textarea或webview?

我知道如何在編譯時綁定自定義字體,但我需要在運行時執行此操作。

是這些替代品可能的:

  • 下載字體在應用程序文件夾內的互聯網和商店嗎?
  • 使用http地址引用外部字體?
  • 通過iTunes傳輸字體?

在iOS6中,標籤和豐富的文本編輯有很多改進,我希望自定義字體支持也得到了改進。

回答

1

回答我自己的問題。

我還沒有找到一種方法來做到這一點與本機textarea在iOS中沒有註冊字體在plist文件。

UIWebView如何支持@ font-face聲明和.ttf文件。訣竅是創建一個指向存儲在Documents文件夾中的字體的NSURL,然後通過使用[webView stringByEvaluatingJavaScriptFromString]告訴Web視圖使用它。

我在第一次測試中,我做了這樣的事情:

我的視圖控制器:

- (NSString *)documentsDirectory { 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                 NSUserDomainMask, YES); 
    return [paths objectAtIndex:0]; 
} 

- (void) setFont { 
    NSString *urlPath = [[self documentsDirectory] 
         stringByAppendingPathComponent:@"myfont.ttf"]; 
    NSURL *url = [NSURL fileURLWithPath:urlPath]; 
    [self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"setFont('%@');", url]]; 
} 

在我的網頁:

<style>  
    body { 
     font-family: customfont; 
     font-size: 40px; 
    }   
</style> 
<script> 
    function setFont(font) { 
     var id = 'customfont', 
      head = document.getElementsByTagName("head")[0], 
     style; 

     style = document.getElementById(id); 
     if(style) { 
      head.removeChild(style); 
     } 

     style = document.createElement("style"); 
     style.setAttribute("id", id); 
     style.textContent = "@font-face { font-family: '" + id + "'; src: url('" + font + "'); font-weight: normal; font-style: normal; }" 
     head.appendChild(style); 
    } 
</script>