mirror of
https://github.com/wu736139669/ManagerDemo.git
synced 2026-08-05 05:55:42 +00:00
113 lines
2.8 KiB
Objective-C
113 lines
2.8 KiB
Objective-C
//
|
|
// DTTextAttachmentIframe.m
|
|
// DTCoreText
|
|
//
|
|
// Created by Oliver Drobnik on 22.04.13.
|
|
// Copyright (c) 2013 Drobnik.com. All rights reserved.
|
|
//
|
|
|
|
#import "DTCoreText.h"
|
|
|
|
@implementation DTIframeTextAttachment
|
|
|
|
- (id)initWithElement:(DTHTMLElement *)element options:(NSDictionary *)options
|
|
{
|
|
self = [super initWithElement:element options:options];
|
|
|
|
if (self)
|
|
{
|
|
// get base URL
|
|
NSURL *baseURL = [options objectForKey:NSBaseURLDocumentOption];
|
|
NSString *src = [element.attributes objectForKey:@"src"];
|
|
|
|
// prepend http: if URL string starts with // (seems to do with youtube iframes as standard)
|
|
if ([[src substringToIndex:2] isEqualToString:@"//"]) {
|
|
src = [@"http:" stringByAppendingString:src];
|
|
}
|
|
|
|
// content URL
|
|
_contentURL = [NSURL URLWithString:src relativeToURL:baseURL];
|
|
}
|
|
|
|
return self;
|
|
}
|
|
|
|
#pragma mark - DTTextAttachmentHTMLEncoding
|
|
|
|
- (NSString *)stringByEncodingAsHTML
|
|
{
|
|
NSMutableString *retString = [NSMutableString string];
|
|
|
|
[retString appendString:@"<iframe"];
|
|
|
|
if (_contentURL)
|
|
{
|
|
[retString appendFormat:@" src=\"%@\"", [_contentURL absoluteString]];
|
|
}
|
|
|
|
// build style for img/video
|
|
NSMutableString *styleString = [NSMutableString string];
|
|
|
|
switch (_verticalAlignment)
|
|
{
|
|
case DTTextAttachmentVerticalAlignmentBaseline:
|
|
{
|
|
// [classStyleString appendString:@"vertical-align:baseline;"];
|
|
break;
|
|
}
|
|
case DTTextAttachmentVerticalAlignmentTop:
|
|
{
|
|
[styleString appendString:@"vertical-align:text-top;"];
|
|
break;
|
|
}
|
|
case DTTextAttachmentVerticalAlignmentCenter:
|
|
{
|
|
[styleString appendString:@"vertical-align:middle;"];
|
|
break;
|
|
}
|
|
case DTTextAttachmentVerticalAlignmentBottom:
|
|
{
|
|
[styleString appendString:@"vertical-align:text-bottom;"];
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (_originalSize.width>0)
|
|
{
|
|
[styleString appendFormat:@"width:%.0fpx;", _originalSize.width];
|
|
}
|
|
|
|
if (_originalSize.height>0)
|
|
{
|
|
[styleString appendFormat:@"height:%.0fpx;", _originalSize.height];
|
|
}
|
|
|
|
// add local style for size, since sizes might vary quite a bit
|
|
if ([styleString length])
|
|
{
|
|
[retString appendFormat:@" style=\"%@\"", styleString];
|
|
}
|
|
|
|
// attach the attributes dictionary
|
|
NSMutableDictionary *tmpAttributes = [_attributes mutableCopy];
|
|
|
|
// remove src,style, width and height we already have these
|
|
[tmpAttributes removeObjectForKey:@"src"];
|
|
[tmpAttributes removeObjectForKey:@"style"];
|
|
[tmpAttributes removeObjectForKey:@"width"];
|
|
[tmpAttributes removeObjectForKey:@"height"];
|
|
|
|
for (__strong NSString *oneKey in [tmpAttributes allKeys])
|
|
{
|
|
oneKey = [oneKey stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
|
|
NSString *value = [[tmpAttributes objectForKey:oneKey] stringByAddingHTMLEntities];
|
|
[retString appendFormat:@" %@=\"%@\"", oneKey, value];
|
|
}
|
|
|
|
[retString appendString:@" />"];
|
|
|
|
return retString;
|
|
}
|
|
|
|
@end
|