UITableViewCell图像旋转后未调整大小

舞蹈SC

屏幕旋转后,无法调整UITableViewCell中图像的大小。在我cellForRowAtIndexPath本人检测装置的宽度,而如果宽度小于480我设置图像到屏幕宽度,然后将高度设置为所述(图像高度/图像宽度*屏幕宽度),以保持缩放的图像。如果设备的宽度大于480,我将执行相同的操作,除了将宽度设置为屏幕的一半,使缩放后的图像略小。

下面是我绘制的纵向和横向布局页面的图像。当我从横向旋转到纵向时,可见图像仍保留在屏幕上,并且除非我滚动到它们离开屏幕的位置,否则不要调整大小。

在此处输入图片说明

当我从肖像转到风景时,同样的事情也起作用,它在右侧留下了一个很大的开放空间,直到我向下滚动为止,然后加载就很好了。我觉得这很简单,例如添加一个自动调整大小的蒙版,但是我不知道该放在哪里以及如何解决它:

[self.myTableView setAutoresizesSubviews:YES];
[self.myTableView setAutoresizingMask:
    UIViewAutoresizingFlexibleWidth |
    UIViewAutoresizingFlexibleHeight];

下面是我的 cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *cellIndentifier = @"BasicCell";
    UITableViewCell *myCell = [tableView dequeueReusableCellWithIdentifier:cellIndentifier];
    myCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIndentifier];

    CGRect result = [UIScreen mainScreen].bounds;
    CGFloat width = CGRectGetWidth(result);
    CGFloat height = CGRectGetHeight(result);

    UIInterfaceOrientation interfaceOrientation = [UIApplication sharedApplication].statusBarOrientation;
    if(UIInterfaceOrientationIsPortrait(interfaceOrientation)){
        result.size = CGSizeMake(width, height);
    } else if(UIInterfaceOrientationIsLandscape(interfaceOrientation)) {
        result.size = CGSizeMake(height, width);
    }

    if(result.size.width <= 480) {
        Companies *item = _feedItems[indexPath.row];
        myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,CGRectGetWidth(self.listTableView.bounds), (item.imageName.size.height / item.imageName.size.width) * CGRectGetWidth(self.listTableView.bounds))];
        myImageView.tag = indexPath.row;
        myImageView.image = item.imageName;

        [myCell addSubview:myImageView];
    }

    if(result.size.width > 480) {
        NSLog(@"IndexPath.row: %d, feedItems: %d",indexPath.row, _feedItems.count);
        if((indexPath.row*2+1) <= _feedItems.count) {
            Companies *item = _feedItems[indexPath.row * 2];
            myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,CGRectGetWidth(self.listTableView.bounds) / 2, (item.imageName.size.height / item.imageName.size.width) / 2 * CGRectGetWidth(self.listTableView.bounds))];
            myImageView.tag = indexPath.row*2;
            myImageView.image = item.imageName;

            [myCell addSubview:myImageView];

            if ((indexPath.row*2+1) < _feedItems.count) {
                Companies *item2 = _feedItems[(indexPath.row * 2) + 1];
                myImageView2 = [[UIImageView alloc] initWithFrame:CGRectMake(CGRectGetWidth(self.listTableView.bounds) / 2,0,CGRectGetWidth(self.listTableView.bounds) / 2, (item.imageName.size.height / item.imageName.size.width) / 2 * CGRectGetWidth(self.listTableView.bounds))];
                myImageView2.tag = indexPath.row*2+1;
                myImageView2.image = item2.imageName;

                [myCell addSubview:myImageView2];
            }
        } 
    }
    return myCell;
}

我确定在某个时候我有正确的想法,但是我尝试过的一切都没有改变。我的直觉告诉我我需要在myImageView中添加autoresizingmask,但是这是在cellForRowAtIndexPath中绘制的。任何帮助是极大的赞赏。

卡洛贝利

[self.myTableView reloadData]如果只需要重新加载单元格则应调用来修复该问题(似乎是问题所在,因为滚动问题时已修复)。

您可以添加如下所示的内容:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    [self.myTableView reloadData]
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

调整旋转元素的大小

来自分类Dev

上传后调整图像大小

来自分类Dev

窗口大小调整后,可可旋转元素消失

来自分类Dev

旋转后,UIWebView内容未调整为新框架

来自分类Dev

调整大小后获取图像尺寸

来自分类Dev

调整图像大小后检测公差颜色

来自分类Dev

调整大小时某些图像正在旋转

来自分类Dev

CakePHP图像未调整大小,适合容器

来自分类Dev

调整图像大小时,Codeigniter图像旋转

来自分类Dev

调整大小后显示图像

来自分类Dev

调整翻转和旋转图像的大小

来自分类Dev

带有可选图像的UITableViewCell大小调整(快速)

来自分类Dev

搜索后页面大小未正确调整

来自分类Dev

Imagemagick命令来调整图像大小,旋转,包装和合并

来自分类Dev

显示图像居中且未调整大小

来自分类Dev

调整大小后浮出div的图像

来自分类Dev

旋转时div内的图像未调整大小

来自分类Dev

JS OnLoad图像未调整大小

来自分类Dev

窗口大小调整后,可可旋转元素消失

来自分类Dev

调整后的UITableViewCell中的UILabel大小显示错误

来自分类Dev

ImageView图像未使用ImageView调整大小

来自分类Dev

调整图像大小,然后在画布中旋转-javascript

来自分类Dev

重新打开IB后,UITableViewCell的内容将调整大小

来自分类Dev

图像旋转-根据图像的高度和宽度调整画布的大小

来自分类Dev

加载后调整图像大小

来自分类Dev

旋转Windows Phone 8.1后调整网格大小

来自分类Dev

调整大小后,UITableViewCell中的UIImageView分辨率较低

来自分类Dev

PHP脚本未调整图像大小

来自分类Dev

更改文本后 QLabel 未调整大小