可重复使用的uiscrollview类

时间:2013-06-27 17:16:00

标签: ios uiscrollview subclass

我经常需要显示带有可以缩放的图像的uiscrollview。这是我在任何特定应用程序中使用的许多其他滚动视图之上。

我想把它分解成我自己的类,我可以实例化类似:

CustomScrollView *scr = [CustomScrollView alloc] init];
scr.image = [UIImage imageNamed:@"myImage.png"];
scr.doesPinchZoom = YES;

CustomScrollView应该创建一个uiscrollview,里面有一个允许捏合和缩放的图像。

这也有自己的关闭按钮以删除所述的scrollview。 我的代码现在甚至无法创建滚动视图。

@interface CustomScrollView () <UIScrollViewDelegate>
@property (nonatomic, strong, readonly) UIScrollView *scrollView;
@end

@implementation CustomScrollView

@synthesize scrollView = _scrollView;

- (UIScrollView *)scrollView {
    if (nil == _scrollView) {
        _scrollView = [[UIScrollView alloc] initWithFrame:self.bounds];
        _scrollView.delegate = self;
        [_scrollView setBackgroundColor:[UIColor redColor]];
        [self addSubview:_scrollView];
        NSLog(@"scrollview");
    }
    return _scrollView;
}

沿着这条路前进的方向是什么?或者甚至只是让滚动视图显示出来...... 当我使用上面的alloc实例化它时,scrollview甚至不会出现在我的视图控制器中。

1 个答案:

答案 0 :(得分:1)

我不知道你发布的代码是否应该是你的.h / .m文件的组合,但不管我相信,除非我误解你,你正试图建立一个子类UIScrollView对象。您绝对可以这样做来自定义UIScrollView并在许多情况下使其可重用。

如果您为子类CustomScrollView命名,示例头文件将如下所示:

//
//  CustomScrollView.h
//


#import <UIKit/UIKit.h>

@interface CustomScrollView : UIScrollView

@property (strong, nonatomic) UIImageView *theImage;

@end

您的实施文件:

//
//  CustomScrollView.m


#import "CustomScrollView.h"

@implementation CustomScrollView

@synthesize theImage;

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        theImage = nil;
    }
    return self;
}

-(void)setTheImage:(UIImageView*)image{


    theImage = image;
    [self addSubview:theImage];

}

@end

然后,您可以在以下任何地方使用新的自定义ScrollView:

CustomScrollView *cSV = [[CustomScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 568)];
cSV.delegate = self;
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
imageView.image = [UIImage imageNamed:@"yourPic.png"];
[cSV setTheImage:imageView];
[self.view addSubview:cSV];

(我做了随机帧,你可以把它们设置成你想要的)

从那里你可以创建类方法来完成你想做的其他事情

希望这在某种程度上有所帮助