2015-01-30 3 views
2

Я пытаюсь разрешить пользователю изменять размер текста данной веб-страницы. Я использую Swift в Xcode 6. HTML файл:Изменение размера текста UIWebView

<!DOCTYPE html> 
    <html> 
    <body> 

     <h1>My First Heading</h1> 

     My first paragraph. 

    </body> 
</html> 

и вот быстрая функция Я звоню, чтобы попытаться изменить размер:

func changeWebViewFontSize(decOrInc: Int, webView: UIWebView) 
{ 
//1 = decreace 
//2 = increace 
var textFontSizeTemp = defaults.objectForKey("textFontSize") as Int 

switch decOrInc 
{ 
case 1: //when decrease 
    defaults.setObject(textFontSizeTemp - 1, forKey: "textFontSize") 
case 2: //when increase 
    defaults.setObject(textFontSizeTemp + 50, forKey: "textFontSize") 
default: 
    break 
} 

var jsString = "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust=\(textFontSize)" 
//var jsString = "alert('test')" 
webView.stringByEvaluatingJavaScriptFromString(jsString) 
} 

Я знаю, что Javascript бежится потому что, когда я запускал функцию alert() в javascript, она работала. Пожалуйста, помогите мне узнать, что не так с моим кодом!

+0

вы первое чтение значения textFontSizeTemp в textFontSizeTemp = defaults.objectForKey («textFontSize») как Int, а затем увеличивая его размер позже в вашем случае case switch. В конце концов, используя значение, которое вы прочитали перед обновлением, чтобы установить размер шрифта, вы уверены, что именно так вы хотите это сделать? – CjCoax

+0

Нет ... Я просто пытался выяснить, как это сделать. Я был бы более чем счастлив, если бы вы предложили другой способ сделать это. –

+0

И просто хотел проверить, вы просто хотите увеличить размер шрифта правильно? – CjCoax

ответ

0

Я написал пример, как это который делает изменение размера шрифта (увеличение размера на нажав кнопку):

class webViewController: UIViewController { 

@IBOutlet weak var webView: UIWebView! 

@IBOutlet weak var increase: UIButton! 

var defaults = ["textFontSize":12] 

@IBAction func btnIncreaseTapped(sender: AnyObject) { 
    changeWebViewFontSize(2,webView: webView) 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let url = NSURL(string: "http://stackoverflow.com/questions/28245483/resizing-uiwebview-text/28245982?noredirect=1#comment44873831_28245982") 


    let urlRequest = NSURLRequest(URL: url!) 

    webView.loadRequest(urlRequest)   

} 

func changeWebViewFontSize(decOrInc: Int, webView: UIWebView) 
{ 
    //1 = decreace 
    //2 = increace 
    var textFontSizeTemp = defaults["textFontSize"]! as Int 


    switch decOrInc 
    { 
    case 1: //when decrease 
     textFontSizeTemp = textFontSizeTemp - 1 
    case 2: //when increase 
     textFontSizeTemp = textFontSizeTemp + 50 
    default: 
     break 
    } 

    defaults["textFontSize"] = textFontSizeTemp 


    var jsString = "document.getElementsByTagName('body')[0].style.fontSize='\(textFontSizeTemp)px'" 
    webView.stringByEvaluatingJavaScriptFromString(jsString) 
    } 
} 
+0

Мой html будет намного дольше, чем тот, который я перечислял, и я у меня их будет много. Я не могу просто сделать каждую строку. –

+0

Не имеет значения, это просто пример, теперь я заменяю строку html на url этого вопроса SO – CjCoax

+0

Кроме того, я сохраняю textSize в NSUserDefaults, поэтому он будет помнить размер текста после закрытия приложения. Правильно ли я делаю это, или я должен делать что-то другое? –

Смежные вопросы