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

iOS 同时被 2 个专栏收录
6 篇文章 1 订阅
11 篇文章 2 订阅


      完成这一功能的前提是,你应该先安装好我上一节所说道的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



最后运行一下看下效果:



  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值