您的位置:首页 > 产品设计 > UI/UE

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

2012-07-08 19:21 369 查看
      完成这一功能的前提是,你应该先安装好我上一节所说道的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


最后运行一下看下效果:




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: