WKWebView 컴퓨팅 높이 및 페이지 크기 조정
@interface CdConferenceGeneralizeCell ()
@end
@implementation CdConferenceGeneralizeCell
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
self.selectionStyle = UITableViewCellSelectionStyleNone;
}
return self;
}
- (void)configuration:(CdConferenceDetailModel *)model{
[self.wkWebView loadHTMLString:model.meetingRemark.introduce baseURL:nil];
}
#define contentSizeKey @"contentSize"
- (WKWebView *)wkWebView{
if (!_wkWebView) {
//
NSString *jScript = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);";
WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:jScript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];
WKUserContentController *wkUController = [[WKUserContentController alloc] init];
[wkUController addUserScript:wkUScript];
WKWebViewConfiguration *wkWebConfig = [[WKWebViewConfiguration alloc] init];
wkWebConfig.userContentController = wkUController;
_wkWebView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, HHBWIDTH, 0) configuration:wkWebConfig];
_wkWebView.scrollView.scrollEnabled = NO;
_wkWebView.navigationDelegate = self;
[_wkWebView.scrollView addObserver:self forKeyPath:contentSizeKey options:NSKeyValueObservingOptionNew context:nil];
[self.contentView addSubview:_wkWebView];
}
return _wkWebView;
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
return nil;
}
- (void)removeObserverForWebViewContentSize {
[_wkWebView.scrollView removeObserver:self forKeyPath:contentSizeKey];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:contentSizeKey]) {
CGFloat height = self.wkWebView.scrollView.contentSize.height;
if (height > 0) {
if (_wkWebViewHeight) {
[self removeObserverForWebViewContentSize];// : ,
_wkWebView.frame = CGRectMake(0, 0, HHBWIDTH, height);
self.wkWebViewHeight(height);
}
}
}
}
+ (NSString *)identifier{
return NSStringFromClass([self class]);
}
@end
CdConferenceGeneralizeCell *cell = [tableView dequeueReusableCellWithIdentifier:[CdConferenceGeneralizeCell identifier]];
if (!cell) {
cell = [[CdConferenceGeneralizeCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[CdConferenceGeneralizeCell identifier]];
}
WS(weakSelf);
[cell configuration:_allMeetDetailModel];
cell.wkWebViewHeight = ^(CGFloat height) {
_webViewH = height;
[weakSelf.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:0 inSection:2]] withRowAnimation:UITableViewRowAnimationNone];
};
return cell;
```
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.