在 iOS 7 或 8 的 Web 视图中使用不同的样式表
Posted
技术标签:
【中文标题】在 iOS 7 或 8 的 Web 视图中使用不同的样式表【英文标题】:Use different style sheets in web view on iOS 7 or 8 【发布时间】:2014-09-01 18:37:02 【问题描述】:我有一个使用 WebView 来显示文本和图像的应用程序。在 ios 8 上,我已将边距和内边距设置为 0px 以正确布局 html 页面。但是要在 iOS 7 上正确查看,必须将边距和内边距设置为 4px。
我怎样才能拥有它,以便它具有两个 iOS 版本的两种不同格式。
我希望它在 iOS 8 上自动将填充和边距设置为 0px,在 iOS 7 上设置为 4px。这是我当前的样式表(在 NSString 中)。
NSString *stylesheet=@"<html><head><style>body margin: 0; padding: 0; h1font-weight:normal;font-family: HelveticaNeue-Thin; padding: 7px; margin-bottom: 3px;pfont-family: HelveticaNeue-Light; padding-top:0px; padding-left: 7px;paddin-right: 7px; margin-top:10px;imgcenter display: block; margin: 0 auto;bfont-weight:normal;font-family: HelveticaNeue-Medium;</style></head><body>";
NSString *footer=@"</body></html>";
[super viewDidLoad];
NSString *fullURL = [NSString stringWithFormat:@"%@%@%@",stylesheet, self.SelectedProduct.content, footer];
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[_webview loadHTMLString:fullURL baseURL:baseURL];
【问题讨论】:
是否可以使用 CSS 媒体查询来获得正确的效果?见stephen.io/mediaqueries 感谢您的帮助。虽然我使用不同的方法解决了问题,但您的链接有助于解决不同的问题。 【参考方案1】:我已经设法使用 if 语句和检查系统版本来解决它。
这是工作代码
#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
和
- (void)viewDidLoad
if (SYSTEM_VERSION_LESS_THAN(@"8.0"))
NSString *stylesheet=@"<html><head><style>body margin: 4px; padding: 4px; margin-top:0pxh1font-weight:normal;font-family: HelveticaNeue-Thin; padding: 7px; margin-bottom: 3px; padding-top:0px;pfont-family: HelveticaNeue-Light; padding-top:0px; padding-left: 7px;paddin-right: 7px; margin-top:10px;imgcenter display: block; margin: 0 auto;bfont-weight:normal;font-family: HelveticaNeue-Medium;</style></head><body>";
NSString *footer=@"</body></html>";
[super viewDidLoad];
NSString *fullURL = [NSString stringWithFormat:@"%@%@%@",stylesheet, self.SelectedProduct.content, footer];
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[_webview loadHTMLString:fullURL baseURL:baseURL];
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
NSString *stylesheet=@"<html><head><style>body margin: 0px; padding: 0px; margin-top:0pxh1font-weight:normal;font-family: HelveticaNeue-Thin; padding: 7px; margin-bottom: 3px; pfont-family: HelveticaNeue-Light; padding-top:0px; padding-left: 7px;paddin-right: 7px; margin-top:10px;imgcenter display: block; margin: 0 auto;bfont-weight:normal;font-family: HelveticaNeue-Medium;</style></head><body>";
NSString *footer=@"</body></html>";
[super viewDidLoad];
NSString *fullURL = [NSString stringWithFormat:@"%@%@%@",stylesheet, self.SelectedProduct.content, footer];
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[_webview loadHTMLString:fullURL baseURL:baseURL];
【讨论】:
以上是关于在 iOS 7 或 8 的 Web 视图中使用不同的样式表的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView 框架在 iOS 8 和 iOS 7 上的大小不同
iOS 7 和 8 中 UITableViewCells 的自动布局指标不同
iOS 7 和 iOS 8 中动态 UITableViewCell 的高度是不可能的