ios学习笔记(六)使用UIScrollView嵌套UIView子类

最后更新于:2022-04-01 09:50:50

完成这一功能的前提是,你应该先安装好我上一节所说道的window-Based Application模版: 教程地址:    http://blog.csdn.net/itachi85/article/details/7706549 接着我们要新建一个window-Based Application 模版 我们创建一个名为HypnosisView的objetctive-C class文件: HypnosisView.h: ~~~ #import <Foundation/Foundation.h> @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 <UIKit/UIKit.h> @class HypnosisView; @interface HypnosisterAppDelegate : NSObject <UIApplicationDelegate, UIScrollViewDelegate> { 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 ~~~ 最后运行一下看下效果: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-03-09_56dfc8291309e.png) http://blog.csdn.net/itachi85/article/details/7706549
';