ios学习笔记(六)使用UIScrollView嵌套UIView子类
jopen
12年前
完成这一功能的前提是,你应该先安装好我上一节所说道的window-Based Application模版:
教程地址:http://www.open-open.com/lib/view/open1341882507072.html
接着我们要新建一个window-Based Application 模版
我们创建一个名为HypnosisView的objetctive-C class文件:
HypnosisView.h:
#import@interface HypnosisView : UIView { } @end
HypnosisView.m:
在这个文件中我们加入了绘制了一个同心圆的图形
#import "HypnosisView.h" @implementation HypnosisView - (void)drawRect:(CGRect)rect { // 获取绘图区域 CGRect bounds = [self bounds]; // 计算中心点 CGPoint center; center.x = bounds.origin.x + bounds.size.width / 2.0; center.y = bounds.origin.y + bounds.size.height / 2.0; // 计算中心点至边界角的距离 float maxRadius = hypot(bounds.size.width, bounds.size.height) / 2.0; // 获取绘图所需要的上下文 CGContextRef context = UIGraphicsGetCurrentContext(); // 用10点的宽度来绘制所有的线条 CGContextSetLineWidth(context, 10); // 线条颜色设为淡灰 [[UIColor lightGrayColor] setStroke]; // 绘制同心圆 for (float currentRadius = maxRadius; currentRadius > 0; currentRadius -= 20) { CGContextAddArc(context, center.x, center.y, currentRadius, 0.0, M_PI * 2.0, YES); CGContextStrokePath(context); } NSString *text = @"hi: i am henrymorgen."; // 获取绘图所需要的字体 UIFont *font = [UIFont boldSystemFontOfSize:28]; // 计算绘图位置 CGRect textRect; textRect.size = [text sizeWithFont:font]; textRect.origin.x = center.x - textRect.size.width / 2.0; textRect.origin.y = center.y - textRect.size.height / 2.0; // 将当前上下文的填充色设为黑色 [[UIColor blackColor] setFill]; [text drawInRect:textRect withFont:font]; } @end
接着我们配置代理 AppDelegate.h:
#import@class HypnosisView; @interface HypnosisterAppDelegate : NSObject { HypnosisView *view; } @property (nonatomic, retain) IBOutlet UIWindow *window; @end
AppDelegate.m:
在代理中我们添加了ScrollView,并将先前的HypnosisView添加到ScrollView中
#import "HypnosisterAppDelegate.h" #import "HypnosisView.h" @implementation HypnosisterAppDelegate @synthesize window=_window; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { CGRect wholeWindow = [[self window] bounds]; UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:wholeWindow]; [[self window] addSubview:scrollView]; // 将视图的大小设为窗口的二倍 CGRect reallyBigRect; reallyBigRect.origin = CGPointZero; reallyBigRect.size.width = wholeWindow.size.width * 2.0; reallyBigRect.size.height = wholeWindow.size.height * 2.0; [scrollView setContentSize:reallyBigRect.size]; // 在UIScrollView对象里居中 CGPoint offset; offset.x = wholeWindow.size.width * 0.5; offset.y = wholeWindow.size.height * 0.5; [scrollView setContentOffset:offset]; // 启用缩放功能 [scrollView setMinimumZoomScale:0.5]; [scrollView setMaximumZoomScale:5]; [scrollView setDelegate:self]; // 创建视图 view = [[HypnosisView alloc] initWithFrame:reallyBigRect]; [view setBackgroundColor:[UIColor clearColor]]; [scrollView addSubview:view]; [scrollView release]; [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]; [[self window] makeKeyAndVisible]; return YES; } - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { return view; } - (void)dealloc { [view release]; [_window release]; [super dealloc]; } @end
最后运行一下看下效果: