在代码中将UIImage插入ScrollView

时间:2013-10-18 14:27:03

标签: iphone ios uiscrollview uiimageview xcode5

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

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

我得到了正确的图片网址,但是我没有将图片放到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>>

2 个答案:

答案 0 :(得分:2)

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

反过来说:

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

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

答案 1 :(得分:0)

我担心当您将_imageView添加到滚动视图时,它实际上是nil。 您应该使用self.imageView或者在下载后imageView更好地添加scrollView