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

我现在想将图像设置为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


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

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>>

最佳答案

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

扭转这个:

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




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

10-08 05:54
查看更多