方法集合

/**
初始化父子控件(在里面添加子控件,并且设置父控件和子控件的属性,不能设置子控件的尺寸和位置)
 */
-(instancetype)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self == nil) {
        self = [[[NSBundle mainBundle]loadNibNamed:@"ZXSWheelView" owner:nil options:nil] lastObject];
    }
    return self;
}
/**
唤醒xib控件(可以在里面设置xib控件的属性,且添加子控件和设置其属性,用于一次性的操作)
 */
-(void)awakeFromNib{
    [super awakeFromNib];
    self.contentV.userInteractionEnabled = YES;
}
/*
取消按钮高亮状态下做的事(自定义button控件,重写该方法会使button控件没有高亮状态)
*/
-(void)setHighlighted:(BOOL)highlighted {
    
}
/*
返回当前按钮当中ImageView的位置尺寸(自定义button控件,重写该方法)
*/
//contentRect:当前按钮的位置尺寸
-(CGRect)imageRectForContentRect:(CGRect)contentRect {
    
    CGFloat w = 40;
    CGFloat h=  48;
    CGFloat x = (contentRect.size.width - w) * 0.5;
    CGFloat y = 20;
    
    return  CGRectMake(x, y, w, h);
}

/*
返回当前按钮当中Label的位置尺寸(自定义button控件,重写该方法)
*/
-(CGRect)titleRectForContentRect:(CGRect)contentRect {

}
/*
CGImageCreateWithImageInRect方法是截取一段图片中的某一部分
*/
    //CGImageCreateWithImageInRect,使用的坐标都是以像素点,
    //在ios当中使用的都是点坐标.
     CGImageRef clipImage =  CGImageCreateWithImageInRect(oriImage.CGImage, CGRectMake(X, Y, clipW, clipH));
    //设置按钮正常状态下显示的图片
     [btn setImage:[UIImage imageWithCGImage:clipImage] forState:UIControlStateNormal];
/*
在实例-UI高级转盘
*/
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    
    CGRect rect =  CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height * 0.5);
    
    if (CGRectContainsPoint(rect, point)) {
        //在指定的范围内
        return [super hitTest:point withEvent:event];
    }else {
        return nil;
    }
    
}
/*
返回当前UIView内容layer类型(需要自定义View,并且重写该方法,用于设置View内容layer为复制层<图层>)
*/
+(Class)layerClass {
    return [CAReplicatorLayer class];
}
/*
当核心动画结束时调用-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag方法(实例-UI高级转盘)
*/
    //让转盘快速的旋转几圈,
    CABasicAnimation *anim = [CABasicAnimation animation];
    anim.keyPath = @"transform.rotation";
    anim.toValue = @(M_PI * 4);
    anim.duration = 0.5;
    anim.delegate = self;
    [self.contentV.layer addAnimation:anim forKey:nil];
    
    //动画结束时当前选中的按钮指向最上方

//当动画结束时调用
-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
    
    //动画结束时当前选中的按钮指向最上方
    //让当前选中的按钮的父控件倒着旋转回去.
    
    //获取当前选中按钮旋转的角度
    CGAffineTransform transform = self.selectBtn.transform;
    //通过transform获取当前旋转的度数
    CGFloat angle = atan2(transform.b, transform.a);
    
    self.contentV.transform = CGAffineTransformMakeRotation(-angle);
    
}
//监听icon弹窗(实例-UI高级3DTouch)
-(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler{
    if ([shortcutItem.type isEqualToString:@"tpye0"]) {
        NSLog(@"%@",shortcutItem.userInfo[@"info"]);
    } else {
        NSLog(@"asdf");
    }
}
/*
归档与解档
*/
    //归档可以保存模型数据
    //归档 archiveRootObject会调用encodeWithCoder:
    [NSKeyedArchiver archiveRootObject:per toFile:filePath];

//在保存对象时告诉要保存当前对象哪些属性.遵守了NSCoding协议时才能写出下面方法
-(void)encodeWithCoder:(NSCoder *)aCoder{
    
    [aCoder encodeObject:self.name forKey:@"name"];
    [aCoder encodeInt:self.age forKey:@"age"];
    [aCoder encodeObject:self.dog forKey:@"dog"];
    
}


    //解档数据
    //unarchiveObjectWithFile会调用initWithCoder
    Person *per = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];

//当解析一个文件的时候调用.(告诉当前要解析文件当中哪些属性.)遵守了NSCoding协议时才能写出下面方法
- (instancetype)initWithCoder:(NSCoder *)aDecoder{
    //当只有其父类遵守了NSCoding协议时,才有[super initWithCoder] 否则 当只有其遵守了NSCoding协议时,才只能使用[super init]
    if (self = [super init]) {
       self.name = [aDecoder decodeObjectForKey:@"name"];
       self.age = [aDecoder decodeIntForKey:@"age"];
       self.dog = [aDecoder decodeObjectForKey:@"dog"];
    }
    return self;
}
/**
隐藏头部状态栏
 */
-(BOOL)prefersStatusBarHidden{
    return YES;
}
/**
当控制器接受到内存警告的时候调用、系统调用、去除一些不必要的内存,去除耗时内存
 */
-(void)didReceiveMemoryWarning:{

}
/**
控制器的view已经显示完毕的时候调用
 */
-(void)viewDidAppear:(Bool)animated:{
   NSLog(@"%@",self.view.superview)
  //打印 **; layer = >**,
//说明在view显示完毕的时候控制器的view并早就成为应用窗口的子控件
  
 [self.view removeFromSuperview];
  //可以将控制器的view从父控件窗口window下移除
}
/**
控制器的view将要显示的时候调用
 */
-(void)viewWillAppear:(Bool)animated:{

}
/**
布局子控件位置(这里可以拿到frame)
 */
-(void)layoutSubviews{

}
/*
// 什么时候调用 当程序一启动的时候就会调用,它先于main()函数先调用,ARC机制是在main函数调用后执行的,这样使用load方法就会出现内存需要自己管理,load方法至始至终只调用一次
// 作用: 将当前类加载进内存, 放在代码区
*/
+(void)load{

}
/**
loadView作用:
控制器加载view的时候调用(当调完这个方法后就会调用
什么时候调用:当第一次使用控制器View的时候调用.
什么时候重写loadView方法.当控制器的View一开始就是一个UIImageView,或者是一个UIWebView时候,可以直接让控制器一开始创建的时候就是它.这样做的好处少创建了一个UIView.自定义控制器的View时
只要界面一切换,就会调用该方法加载View
 loadView默认作法:
  1.先去判断当前控制器是否从StoryBoard当中加载,如果是从StoryBoard当中加载,那么就把storyBoard当中指定的控制器的View赋值给当前控制器控制器的View.
  2.判断当前控制器的View是否从xib当中加载,如果是,那么就把xib当中的View赋值给当前控制器的View.
  3.如果都不是话, 那么就创建一个空的View,给当前控制器的View赋值.
 **/
-(void)loadView{
   [super loadView];
    XMGView *xmgV = [[XMGView alloc] init];
    xmgV.backgroundColor = [UIColor blueColor];
    self.view = xmgV;
}
/**
是在控制器的view加载完毕的时候调用(重写系统方法需要父类调用相应的方法)是由系统来调用的、一般用于控件的初始化,数据的初始化(数据的初始化一般最好在懒加载中进行,当然在-viewdidload方法里面也同样可以)
 */
-(void)viewDidLoad:{
     NSLog(@"%@",self.view.superview);打印为null,说明在view加载完毕的时候控制器的view并没有成为应用窗口的子控件
}
/*
// 什么时候调用 当第一次初始这个类的时候调用,如果当这个类有子类会调用多次(当前类或者它的子类每一次使用的时候, 会调用这个方法)
// 作用 初始化这个类
项目实例-UI项目-彩票
*/
+ (void)initialize{
    
    if (self == [ZXSNavigationController class]) {
        //设置导航栏的背景,字体颜色,大小, 这些都是属性导航控制器的,所以这些应该放到导航控制器的内部.
        //获取整个项目当中的UINavigationBar.
        //用这个方法,获取整个项目当中的UINavigationBar.系统的也给获取了,也给设置了背景,我们不须要改系统的东西.
        //所以在这里,不能直接获取整个系统当中的UINavigationBar..所以我们也不直接使用这个.
        //    UINavigationBar *bar =  [UINavigationBar appearance];
        
        //初始化本类时,设置导航控制栏的属性
        //1.设置导航条背景和字体颜色属性
        //获取导航条标识
        UINavigationBar *bar = [UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[ZXSNavigationController class]]];
        //设置背景图片
        //想要设置导航栏背景图片.必须得要使用UIBarMetricsDefault
        //设置为UIBarMetricsDefault的,控制器的View的Y值从64开始.其它类型的控制器的View的Y值从0开始.
        [bar setBackgroundImage:[UIImage imageNamed:@"NavBar64"] forBarMetrics:UIBarMetricsDefault];
        
        // 设置字体颜色大小
        NSMutableDictionary *dictM = [NSMutableDictionary dictionary];
        //字体大小
        dictM[NSFontAttributeName] = [UIFont boldSystemFontOfSize:22];
        // 字体颜色
        dictM[NSForegroundColorAttributeName] = [UIColor whiteColor];
        //设置富文本
        [bar setTitleTextAttributes:dictM];
        
        //设置导航条前景色
        [bar setTintColor:[UIColor whiteColor]];
        
        //2.设置简单返回按钮(统一设置返回按钮)
        //获取导航条按钮标识
        UIBarButtonItem *item = [UIBarButtonItem appearanceWhenContainedIn:self, nil];
        //设置返回按钮的标题文字位置
        [item setBackButtonTitlePositionAdjustment:UIOffsetMake(0,-100) forBarMetrics:UIBarMetricsDefault];
    }
}

你可能感兴趣的:(方法集合)