0

我通过segue(房间照片的名称、描述和名称)传递一些数据

我现在想将图像设置为a scrollView,以便用户可以滚动全景图片。

我得到了图像的正确 URL,但我没有将图像放入 scrollView。

我的代码是这样的:

    #import "RoomsDetailVC.h"
    #import "RoomsViewController.h"

    @interface RoomsDetailVC ()

    @property (strong, nonatomic) IBOutlet UIScrollView *scrollView;
    @property (strong, nonatomic) UIImageView *imageView;

    @end

    @implementation RoomsDetailVC

    @synthesize roomName;
    @synthesize priceLabel;
    @synthesize descriptionLabel;
    @synthesize roomImageString;

    - (void)viewDidLoad {
        [super viewDidLoad];

        self.roomName.title = [self.roomNameString description];
        self.priceLabel.text = [self.priceLabelString description];
        self.descriptionLabel.text = [self.descriptionLabelString description];

        [self.scrollView addSubview:_imageView];
        [self setImage];
    }

    - (void)setImage {
        if (self.scrollView) {
            NSString *imageName = [self.roomImageString description];
            NSURL *imageURL = [[NSBundle mainBundle] URLForResource:imageName withExtension:@"png"];
            NSData *imageData = [[NSData alloc] initWithContentsOfURL:imageURL];


            UIImage *image = [[UIImage alloc] initWithData:imageData];
            if (image) {
                self.scrollView.zoomScale = 1.0;
                self.scrollView.contentSize = image.size;
                self.imageView.image = image;
                self.imageView.frame = CGRectMake(0, 0, image.size.width, image.size.height);
                NSLog(@"image: %@", imageURL);
            } else {
                NSLog(@"no image");
            }
        }
    }

    - (UIImageView *)imageView {
        if (!_imageView) _imageView = [[UIImageView alloc] initWithFrame:CGRectZero];
        return _imageView;
        NSLog(@"imageView");
    }

    @end

NSLog 结果self.scrollView.description是这样的:

scrollView: <UIScrollView: 0x1c114410; frame = (20 268; 280 160); clipsToBounds = YES; autoresize = RM+TM; gestureRecognizers = <NSArray: 0x1c114a10>; layer = <CALayer: 0x1c114660>; contentOffset: {0, 0}>

`self.imageView.description 的 NSLog 结果是这样的:

imageView: <UIImageView: 0x1c115e90; frame = (0 0; 516 160); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1c113160>>
4

2 回答 2

2

我认为这是因为您在获取图像之前就添加了子视图(_imageView)。

扭转这个:

    [self.scrollView addSubview:_imageView];
    [self setImage];

    [self setImage];
    [self.scrollView addSubview:_imageView];
于 2013-10-18T14:30:09.613 回答
0

恐怕当您添加_imageView到滚动视图时,它实际上是nil. 您应该在下载后使用self.imageView或者最好将其添加imageViewscrollView

于 2013-10-18T14:30:44.007 回答