有空就写,没空就不写了!

本人学ios没多久,但也发觉了一个问题,那就是ios到了5.0以后才会官方提供自定义控件.

可是目前在中国市场还有很多4.X的的手机,甚至于还可能会有3.X,但在这些sdk中,都没有官方提供的自定义方法.如果我们要自己定义一些更适合我们的控件,那我们要怎么做呢?这就是我以后几天我搞的,我能写的可能就这一篇,以后可能还会写控件自定义,也可能不定这方面了~我也是学到什么后,有空才写随笔的!

先传一个demo先,这个是我用3分钟做的,晚上回宿舍后有空再详说,这个是一种思想,自定义的思想还有很多,以后可能会补上!,大牛们别喷就行了,我是新手!

忘了补上链接,不好意思!https://files.cnblogs.com/chiefCTO/CostomUITabar.zip

好了,这次说一下以前的东本,上面那么是之前学艺不精写的,下面我就写一下一些半真的自定义,呵

不知大家有没有记得oc的一种语法,目录,这个功能绝对的强大,下面要说的就是这个啦,后面会说一下真正自定义,用nscode手动画,呵!

先来个小例子~(UINav的)

UINavigationBar.h

#import <Foundation/Foundation.h>

@interface UINavigationBar(CustomImage)
- (void)drawRect:(CGRect)rect;
@end

第一眼看上去,你可能会觉得很怪,怎么这里还是UINavigationBar?那样是不是要重写了?其实不是!

在objective-c中,有目录这一根念,这个就是利用目录去定义UINavigationBar了,在这个.h中,我们声明一个drawRect方法;

UINavigationBar.m

#import "UINavigationBar.h"

@implementation UINavigationBar(CustomImage)

- (void)drawRect:(CGRect)rect {  
    UIImage *image = [UIImage imageNamed: @"背景.png"];  //背景图片
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 
@end

在.m中,我们就直接将我们想要的东西画上去!

画上去的方式有很多种,我再提供一种,其实方法是差不多的~

@implementation UIToolbar(color)
- (void)drawRect:(CGRect)rect {
//    CGContextRef c = UIGraphicsGetCurrentContext();
//    UIImage *image = [UIImage imageNamed:@"背景.png"];
//    CGContextDrawImage(c, rect, image.CGImage);
    UIImage *image = [UIImage imageNamed: @"背景.png"];  //背景图片
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
}
@end

上面的是我写的UIToolbar,方式是一样的~呵~注掉的那一部份就是另一种方式了!

好了,至于用NSCode去画的话,我就不多说了~直接把代码给你们!

https://files.cnblogs.com/chiefCTO/PascalW-PDColoredProgressview-bedc596.zip

posted on 2012-04-25 10:02  Conerlius  阅读(2624)  评论(0编辑  收藏  举报