【发布时间】:2014-03-09 08:21:04
【问题描述】:
我试图根据我的UIWebView 内容设置UIScrollView 的高度。
我在故事板中使用自动布局,目标是 ios7。
我知道如何通过此代码将大小硬编码为 UIScrollView 的高度:
-(void) viewDidLayoutSubviews{
UIScrollView *sv = (UIScrollView *)[self.view viewWithTag:30];
sv.contentSize = CGSizeMake(0,1200);
}
以及如何根据内容设置UIWebView 高度:
- (void)webViewDidStartLoad:(UIWebView *)bweb
{
CGRect frame = byweb.frame;
frame.size.height = 5.0f;
bweb.frame = frame;
}
-(void) viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (void)webViewDidFinishLoad:(UIWebView *)bweb{
CGSize mWebViewTextSize = [bweb sizeThatFits:CGSizeMake(1.0f, 1.0f)];
CGRect mWebViewFrame = bweb.frame;
mWebViewFrame.size.height = mWebViewTextSize.height;
self.cellhieghtforwebview = &(mWebViewFrame.size.height);
bweb.frame = mWebViewFrame;
bweb.scrollView.scrollEnabled = NO;
bweb.scrollView.bounces = NO;
UIScrollView *sv = (UIScrollView *)[self.view viewWithTag:30];
sv.contentSize = CGSizeMake(0, *(self.cellhieghtforwebview));
[self viewDidLayoutSubviews];
}
但是设置UIWebView的高度后不知道怎么设置scrollview的高度
这是总代码:
@interface NBViewController () <UIWebViewDelegate,UIScrollViewDelegate>
@property (nonatomic, strong) NSMutableDictionary *imageDownloadsInProgress;
@end
@implementation NBViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.imageDownloadsInProgress = [NSMutableDictionary dictionary];
CGFloat xOffset = 0;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
xOffset = 224;
}
pullRightView = [[PullableView alloc] initWithFrame:CGRectMake(0, 200, 200, 300)];
pullRightView.backgroundColor = [UIColor lightGrayColor];
pullRightView.openedCenter = CGPointMake(100, 200);
pullRightView.closedCenter = CGPointMake(-70, 200);
pullRightView.center = pullRightView.closedCenter;
pullRightView.animate = NO;
pullRightView.handleView.backgroundColor = [UIColor darkGrayColor];
pullRightView.handleView.frame = CGRectMake(170, 0, 30, 300);
[self.view addSubview:pullRightView];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 160, 30)];
label.backgroundColor = [UIColor darkGrayColor];
label.textColor = [UIColor whiteColor];
label.text = @"User name";
label.transform = CGAffineTransformMakeRotation(-M_PI_2);
label.center = CGPointMake(185, 80);
[pullRightView addSubview:label];
NSString *s = self.Bodys;
s = [@"<html dir=\"rtl\">" stringByAppendingString:s];
s = [s stringByAppendingString:@"</html>"];
UIWebView *bweb = (UIWebView *)[self.view viewWithTag:3];
UIImageView *uimg = (UIImageView *)[self.view viewWithTag:20];
UILabel *title = (UILabel *)[self.view viewWithTag:2];
uimg.image = self.NBimage;
[title setText:self.Titles];
bweb.delegate = self;
[bweb loadHTMLString:s baseURL:nil];
bweb.scrollView.scrollEnabled = NO;
bweb.scrollView.bounces = NO;
}
-(void) viewDidLayoutSubviews{
UIScrollView *sv = (UIScrollView *)[self.view viewWithTag:30];
if((self.cellhieghtforwebview != nil)){
NSLog(@"not null enter %d" , (int)*(self.cellhieghtforwebview));
if((int)*(self.cellhieghtforwebview) > 0){
NSLog(@"above zero enter %d" , (int)*(self.cellhieghtforwebview));
sv.contentSize = CGSizeMake(0,(int)*(self.cellhieghtforwebview));
}
}else{
NSLog(@"aaaa %d" , 1200);
sv.contentSize = CGSizeMake(0,1200);
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
NSArray *allDownloads = [self.imageDownloadsInProgress allValues];
[allDownloads makeObjectsPerformSelector:@selector(cancelDownload)];
[self.imageDownloadsInProgress removeAllObjects];
}
- (void)webViewDidStartLoad:(UIWebView *)bweb
{
CGRect frame = bweb.frame;
frame.size.height = 5.0f;
bweb.frame = frame;
}
-(void) viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (void)webViewDidFinishLoad:(UIWebView *)bweb{
NSLog(@"finish loading");
CGSize mWebViewTextSize = [bweb sizeThatFits:CGSizeMake(1.0f, 1.0f)];
CGRect mWebViewFrame = bweb.frame;
mWebViewFrame.size.height = mWebViewTextSize.height;
self.cellhieghtforwebview = &(mWebViewFrame.size.height);
bweb.frame = mWebViewFrame;
NSLog(@"%f",*self.cellhieghtforwebview);
bweb.scrollView.scrollEnabled = NO;
bweb.scrollView.bounces = NO;
UIScrollView *sv = (UIScrollView *)[self.view viewWithTag:30];
sv.contentSize = CGSizeMake(0, *(self.cellhieghtforwebview));
[self viewDidLayoutSubviews];
}
-(void)bweb:(UIWebView *)bweb didFailLoadWithError:(NSError *)error {
NSLog(@"error loading");
}
@end
故事板截图:
【问题讨论】:
-
您在 UIScrollView 上有其他视图还是在 UIScrollView 上只有 UIWebView?
-
是的,我还有另外两个视图(uiimageview,标签)。它们都在 uiscrollview 里面。
-
您是在 webview 下方还是上方添加图像视图和标签?您能否制作一张图片并附上,以便我了解您的视图应该是什么样子?
-
确定我添加了故事板的屏幕截图
标签: ios uiwebview uiscrollview