動態(tài)改變UIWebView的高度

  • 需求

    • 界面由兩部分構(gòu)成,上部分顯示圖片,下部分顯示文字,由于服務器是分開返回圖片及HTML,并且滾動文字的時候,圖片要跟隨滾動
  • 解決方法

    • 通過UITableView展示圖片及文字(主要是為了需求更改的時候,更改UITableView會更簡單),這樣就涉及到動態(tài)改變UIWebView的高度
  • 實現(xiàn)細節(jié)

@interface PrizeDetailsViewController () <UIWebViewDelegate>
@property (weak, nonatomic) IBOutlet UIWebView *webView;
/**
 *  webViewH
 */
@property (nonatomic, assign) CGFloat webViewH;
@end

@implementation PrizeDetailsViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
  
    [self setupUI];
}

- (void)setupUI {
    self.webView.backgroundColor = [UIColor clearColor];
    // 禁止webView滾動
    self.webView.scrollView.showsHorizontalScrollIndicator = NO;
    self.webView.scrollView.showsVerticalScrollIndicator = NO;
    self.webView.userInteractionEnabled = NO;
    self.webView.delegate = self;
    
    NSString *tmpStr = @"<h6>每個環(huán)境中有不同的bundleID、bundleName和app圖標。這樣做可以確保您可以直接識別安裝在設備上的不同版本。也許更重要的是,它能夠使我們在設備上有多個不同的版本,因為在每個環(huán)境中都有自己的bundleID</h6>";

    // 監(jiān)聽webView的contentSize改變的時候,更新tableView
    [self.webView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];
    [self.webView loadHTMLString:tmpStr baseURL:nil];
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
    self.webViewH = [change[@"new"] CGSizeValue].height;
    [self.tableView reloadData];
}

// 添加了觀察者,在控制器銷毀的時候,一定要移除觀察者
- (void)dealloc {
    [self.webView.scrollView removeObserver:self forKeyPath:@"contentSize"];
}

#pragma mark webViewDelegate
- (void)webViewDidFinishLoad:(UIWebView *)webView {
    self.webViewH = [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue];
    [self.tableView reloadData];
}

#pragma mark - tableView
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row == 1) {
        return self.webViewH;
    }
    return [super tableView:tableView heightForRowAtIndexPath:indexPath];
}
@end

remark: 以上代碼僅是列出比較重要的步驟,各位大神們有什么好的意見,歡迎討論

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 15,101評論 4 61
  • 今天是2017年9元23日星期六,早餐有面條+橙汁+三文治,面條是大兒子煮的,由于昨天叫他幫忙并鼓勵他,今天早上自...
    小蔡xc閱讀 330評論 0 0
  • 目標:1、希望孩子擁有更多朋友更加開心快樂!智慧多多! 2、希望我的學習可以讓我通過稅一稅二考試。 3、希望自己能...
    zl向日葵閱讀 210評論 0 0
  • 一路江湖一路歡笑。人生就是這樣,你以為江湖路遠,卻不知世人百般,人人都是江湖人;你不知江湖何處?早已經(jīng)有人說過,有...
    cdebc87c4500閱讀 193評論 0 0

友情鏈接更多精彩內(nèi)容