0

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

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

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

CustomScrollView 应该创建一个 uiscrollview,其中包含允许捏合和缩放的图像。

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

@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;
}

这条路有什么方向吗?甚至只是让滚动视图显示出来......当我使用上面的分配器实例化它时,滚动视图甚至没有出现在我的视图控制器中。

4

1 回答 1

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

然后无论您想在哪里使用新的 Custom ScrollView for ex,您都可以这样做:

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

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

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

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

于 2013-06-27T20:22:28.097 回答