• 使用代理和block写一个alertView


    代理:

    MyAlertView.h:
    @property (nonatomic,assign)id      delegate;
    
    @protocol MyAlertViewDelegate <NSObject>
    
    - (void)myAlertView:(MyAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
    
    @end
    MyAlertView.m:
    - (void)buttonClick:(id)sender { UIButton *button = (UIButton *)sender; int index = (int)button.tag - 10; if ([self.delegate respondsToSelector:@selector(myAlertView:clickedButtonAtIndex:)]) { [self.delegate myAlertView:self clickedButtonAtIndex:index]; } [self disappear]; }
    调用处ViewController:
    - (void)myAlertView:(MyAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { NSLog(@"buttonIndex:%d",buttonIndex); }

    使用block:

    MyAlertView.h:
    
    //使用copy 而不是retain ,因为block 变量是声明在栈上的,retain之后还是在栈上,方法结束,栈的内存就被系统自动释放,copy 可以把一个block 变量从栈上拷贝到堆上,堆上的内存由引用计数管理,所以我们就能自己决定block的释放。
    @property (nonatomic,copy)void (^buttonClick)(int);
    MyAlertView.m:
    - (void)buttonClick:(id)sender { UIButton *button = (UIButton *)sender; int index = (int)button.tag - 10; self.buttonClick(index); [self disappear]; }
    调用处ViewController:
    alertView.buttonClick = ^(int index){ NSLog(@"buttonIndex:%d",buttonIndex); };

    UILabel类别自适应高度

    #import <UIKit/UIKit.h>
    
    @interface UILabel (AutoFitSize)
    
    +(UILabel *)getInfoLabel:(UILabel *)label withText:(NSString *)ktext withFont:(UIFont *)kfont withtosize:(CGRect)krect withBackGroundColor:(UIColor *)kbackgroundColor;
    
    @end
    #import "UILabel+AutoFitSize.h"
    
    //判断是否是IOS7以上的系统(包含IOS7)
    #define bIos7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0?YES : NO)
    
    @implementation UILabel (AutoFitSize)
    
    #if __IPHONE_OS_VERSION_MAX_ALLOWED < 70000
    
    +(UILabel *)getInfoLabel:(UILabel *)label withText:(NSString *)ktext withFont:(UIFont *)kfont withtosize:(CGRect)krect withBackGroundColor:(UIColor *)kbackgroundColor
    {
        label.font=kfont;
        label.text = ktext;
        label.textColor = [UIColor blackColor];
        label.textAlignment = NSTextAlignmentCenter;
        label.backgroundColor=kbackgroundColor;
    
        label.numberOfLines=0;
        label.lineBreakMode=NSLineBreakByTruncatingTail;
        //内容显示  高度自适应
        CGSize sizeToFit =[ktext sizeWithFont:font constrainedToSize:CGSizeMake(krect.size.width,10000)lineBreakMode:NSLineBreakByWordWrapping];
        label.frame=CGRectMake(krect.origin.x,krect.origin.y,sizeToFit.width, sizeToFit.height);;
        return label;
    }
    
    #else
    
    +(UILabel *)getInfoLabel:(UILabel *)label withText:(NSString *)ktext withFont:(UIFont *)kfont withtosize:(CGRect)krect withBackGroundColor:(UIColor *)kbackgroundColor
    {
        label.text = ktext;
        label.font = kfont;
        label.textColor = [UIColor blackColor];
        label.textAlignment = NSTextAlignmentCenter;
        label.backgroundColor = kbackgroundColor;
        
        label.numberOfLines =0;
        label.lineBreakMode =NSLineBreakByTruncatingTail ;
        //高度估计文本大概要显示几行,宽度根据需求自己定义。 MAXFLOAT 可以算出具体要多高
        CGSize size =CGSizeMake(krect.size.width,10000);
        NSDictionary * tdic = [NSDictionary dictionaryWithObjectsAndKeys:kfont,NSFontAttributeName,nil];
        //ios7方法,获取文本需要的size,限制宽度
        CGSize  actualsize =[ktext boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin  attributes:tdic context:nil].size;
        label.frame=CGRectMake(krect.origin.x,krect.origin.y,actualsize.width, actualsize.height);
        
        return label;
    }
    
    #endif
    
    @end

    代码地址:http://pan.baidu.com/s/1hqAKp3u

     
     
     
     
     
    原创文章,转载请声明出处!
  • 相关阅读:
    JSP基础学习
    opnet仿真过程中SEED的概念问题 分类: opnet 2014-11-02 15:25 69人阅读 评论(0) 收藏
    strtok函数 分类: c++ 2014-11-02 15:24 214人阅读 评论(0) 收藏
    无线网络中常用的路由算法 分类: 协议 2014-10-08 19:40 86人阅读 评论(0) 收藏
    cin问题 分类: c++ 2014-08-02 21:13 38人阅读 评论(0) 收藏
    opnet点对点通信模型 分类: opnet 2014-05-26 22:15 246人阅读 评论(3) 收藏
    opnet的sink模块学习 分类: opnet 2014-05-18 10:28 161人阅读 评论(0) 收藏
    opnet的simple_source模块学习 分类: opnet 2014-05-18 09:50 170人阅读 评论(0) 收藏
    OPNET中FIN,FOUT以及FRET的作用 分类: opnet 2014-05-12 16:07 144人阅读 评论(0) 收藏
    opnet安装及安装中出现问题的解决办法 分类: opnet 2014-04-06 21:50 397人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/renlipeng/p/4558119.html
Copyright © 2020-2023  润新知