[请教] 网易新闻客户端,在设置的view controller上面设置字体大小,如何立刻改变网易新闻正文的字体的大小的?

2013 年 10 月 17 日
 parkman
初学IOS, 请问如题的一个问题。
1. 是把设置的view controller 的 setting 值保存到磁盘上,每次重新打开网易新闻正文的时候,先读取字体大小,然后在正文中进行渲染吗
5207 次点击
所在节点    iDev
10 条回复
tuoxie007
2013 年 10 月 17 日
我没用过网易新闻客户端,猜想的,你说的对,我另补充两条愚见
1. 对于已经打开的正文,可以在字体设置变化之后,发出一个notification,正文所在的view controller监听之,由此触发一个方法,在该方法里修改当前字体大小
2. 保存磁盘可以(注意是否需要考虑iCloud同步问题),用NSUserDefaults最简单,还能用系统的Settings,当然,也有把设置放在服务器上的
yellowV2ex
2013 年 10 月 17 日
顺便问一下,类似网易新闻或数字尾巴或太平洋电脑客户端,打开文章内容之后,图片是会先用一个loading图代替,待图片载入完了再显示,文字也会根据图片大小保持一定的间距。
设置里可以设置图片的质量和是否允许显示图片等选项。

这种一般是怎么做的? 是一个UIWebView然后剩下的事交给JS还是怎么做呢?
parkman
2013 年 10 月 17 日
@tuoxie007

谢谢。 你的意思是不是如果所有的正文都统一使用一种view controller,当设置改变时,在该view controller里面调用 fontchanged 方法?
run2
2013 年 10 月 17 日
监听 UIContentSizeCategoryDidChangeNotification
然后更新页面。

字体设为 UIFontTextStyleBody 或者其他的preferredFontDescriptorWithTextStyle
字体大小为0,既为系统自动调节。
应该是iOS7 更新的api,codeschool的iOS7课程正好覆盖到这个内容

Core iOS7 Level2 challenge 7
没读过用户协议,但应该不能把code放上来,抱歉。
但搜下文档应该就清楚了
run2
2013 年 10 月 17 日
之前的iOS版本也可以自己用Notification 加设置实现。
run2
2013 年 10 月 17 日
tuoxie007
2013 年 10 月 18 日
@parkman 对呀
tangqiaoboy
2013 年 10 月 29 日
@sobigfish dynamic type 是iOS7的方法,网易新闻支持iOS5.0+, 所以不能简单使用7.0的新API来做这件事情。
@yellowV2ex 说的比较对路,网易新闻是用UIWebView来做的,关于UIWebView内容中图片的显示,主要是通过调用native代码异步下载,然后再调到js端加载本地图片完成的,我写过一篇介绍相关技术的文章:http://blog.devtang.com/blog/2012/03/24/talk-about-uiwebview-and-phonegap/

最后回答一下楼主的问题,网易新闻客户端正文是用UIWebView来显示的,而UIWebView里面的内容实际上是html,所以切换字体可以直接用javascript换一下css样式即可。

我之前在网易工作过,和网易新闻客户端的作者也认识,所以以上内容应该不会有什么问题。
run2
2013 年 10 月 30 日
@tangqiaoboy 恩,如果希望提供文字复制共享什么的 UIWebView确实很好用,其他的短文字的话UIWebView貌似有点重啦
tangqiaoboy
2013 年 11 月 5 日
@sobigfish 是的,短文字可以用nimbus基于core text写的NIAttributeLabel或者自己基于core text写排版。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/85885

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX