zoukankan      html  css  js  c++  java
  • 详解iOS开发之自定义View

    iOS开发之自定义View是本文要将介绍的内容,iOS SDK中的View是UIView,我们可以很方便的自定义一个View。创建一个 Window-based Application程序,在其中添加一个Hypnosister的类,这个类选择继承UIObject。修改这个类,使他继承:UIView

    1. @interface HypnosisView : UIView 

    自定义View的关键是定义drawRect: 方法,因为主要是通过重载这个方法,来改变view的外观。例如,可以使用下面代码绘制一个很多环中环的效果的view

    1. View Code   
    2. - (void)drawRect:(CGRect)rect   
    3. {      
    4. // What rectangle am I filling?    CGRect bounds = [self bounds];      
    5. // Where is its center?    CGPoint center;      
    6. center.x = bounds.origin.x + bounds.size.width / 2.0;      
    7. center.y = bounds.origin.y + bounds.size.height / 2.0;      
    8. // From the center how far out to a corner?    float maxRadius = hypot(bounds.size.width, bounds.size.height) / 2.0;      
    9. // Get the context being drawn upon    CGContextRef context = UIGraphicsGetCurrentContext();      
    10. // All lines will be drawn 10 points wide    CGContextSetLineWidth(context, 10);      
    11. // Set the stroke color to light gray    [[UIColor lightGrayColor] setStroke];      
    12. // Draw concentric circles from the outside in    for (float currentRadius = maxRadius; currentRadius > 0;   
    13. currentRadius -= 20)    {          
    14. CGContextAddArc(context, center.x, center.y,                          
    15.                           currentRadius, 0.0, M_PI * 2.0, YES);         
    16.  CGContextStrokePath(context);      
    17. }  

    这样view的效果如下图:

    详解iOS开发之自定义View

    我们可以继续绘制一些东西,比如绘制文字,将下面代码添加带这个方法后面。

    1. // Create a string    NSString *text = @"我是朱祁林,不是朱麒麟";  
    2.     // Get a font to draw it in    UIFont *font = [UIFont boldSystemFontOfSize:28];  
    3.     // Where am I going to draw it?    CGRect textRect;   
    4.     textRect.size = [text sizeWithFont:font];  
    5.    textRect.origin.x = center.x - textRect.size.width / 2.0;  
    6.     textRect.origin.y = center.y - textRect.size.height / 2.0;      
    7. // Set the fill color of the current context to black     [[UIColor blackColor] setFill];      
    8. // Set the shadow to be offset 4 points right, 3 points down,       
    9. // dark gray and with a blur radius of 2 points     CGSize offset = CGSizeMake(4, 3);      
    10. CGColorRef color = [[UIColor darkGrayColor] CGColor];      
    11. CGContextSetShadowWithColor(context, offset, 2.0, color);      
    12. // Draw the string    [text drawInRect:textRect     
    13.                                withFont:font]; 

    效果:

    详解iOS开发之自定义View

    如果view过大,我们可以把它放置到一个UIScrollView中间,这样就可以进行拖动了。UIScrollView与View的关系如下图:

    详解iOS开发之自定义View

    使用下面代码创建一个比iPhone屏幕大4倍的View,然后通过UIScrollView来展示,代码如下:

    1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
    2. {   
    3.        //创建一个窗体大小的CGRect     
    4.         CGRect wholeWindow = [[self window] bounds];          
    5.         // 创建一个窗体大小的HypnosisView实例      
    6.         view = [[HypnosisView alloc] initWithFrame:wholeWindow];          
    7.         UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:wholeWindow];      
    8.         [[self window] addSubview:scrollView];      
    9.         // Make your view twice as large as the window    CGRect reallyBigRect;      
    10.         reallyBigRect.origin = CGPointZero;      
    11.         reallyBigRect.size.width = wholeWindow.size.width * 2.0;     
    12.          reallyBigRect.size.height = wholeWindow.size.height * 2.0;      
    13.          [scrollView setContentSize:reallyBigRect.size];      
    14.          CGPoint offset;      
    15.          offset.x = wholeWindow.size.width * 0.5;      
    16.          offset.y = wholeWindow.size.height * 0.5;      
    17.          [scrollView setContentOffset:offset];          
    18.          // Create the view    view = [[HypnosisView alloc] initWithFrame:reallyBigRect];     
    19.           [view setBackgroundColor:[UIColor clearColor]];      
    20.           [scrollView addSubview:view];      
    21.           [scrollView release];          
    22.           [[UIApplication sharedApplication] setStatusBarHidden:YES  
    23.                                        withAnimation:UIStatusBarAnimationFade];      
    24.           [[self window] makeKeyAndVisible];      
    25.   return YES;  

    这样我们就可以拖动来展示看不到的view了,如下图:

    详解iOS开发之自定义View

    通过UIScrollView我们还可以设置view的缩放功能,将下面代码添加到中。这样我们就可以使用两根手指缩放view了。

    1. // Enable zooming      
    2. [scrollView setMinimumZoomScale:0.5];      
    3. [scrollView setMaximumZoomScale:5];     
    4.  [scrollView setDelegate:self]; 

    小结:详解iOS开发之自定义View的内容介绍完了,简单的总结了一下自定义view的使用,希望本文对你有所帮助!本文为了方便友们更好的去学IOS开发中的View,提供代码下载,地址为:http://files.cnblogs.com/zhuqil/Hypnosister.zip 。

  • 相关阅读:
    angular ng-bind-html异常Attempting to use an unsafe value in a safe context处理
    JS执行机制详解,定时器时间间隔的真正含义
    es6入门4--promise详解
    es6入门3--箭头函数与形参等属性的拓展
    JS判断滚动条到底部,页面是否有滚动条
    js forEach跳出循环
    es6入门2--对象解构赋值
    前端开发与日常好玩的的小工具,网站与插件分享
    详解 线程池
    详解 volatile关键字 与 CAS算法
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4969838.html
Copyright © 2011-2022 走看看