美文网首页
一些常用的代码(二)

一些常用的代码(二)

作者: 努力奔跑的小男孩 | 来源:发表于2017-10-23 10:07 被阅读27次

    目录

    1. 给UITableView 定制headView 字体大小 和 字体颜色
    2. 针对UICollectionView 的 cell 的 定制问题
    3. 用懒加载初始化 属性
    4.实现UITableView 的协议方法
    5.使用代理 反向传值的经典运用
    6.给 UIView 某几个角添加圆角 (http://www.jianshu.com/p/30d78587d8b4)
    7. 颜色宏 用户详情Demo
    8. 弱引用指针 (Swift OC 版)
    9. Masonry的使用(http://liuyanwei.jumppo.com/2015/06/14/ios-library-masonry.html)
    10. MUI(http://www.dcloud.io/mui.html) 混合开发
    11. 自定制 AlertView (DEMO: https://github.com/chinaiOSSwift/CustomAlert)
    12. 视频播放器 (根据手机系统不同版本)
    13. isKindOfClass与isMemberOfClass区别
    14. 有关Masonry , 自动布局
    15.图片填充(使用图片路径 填充)
    16.给图片添加毛玻璃效果
    17. 根据时间拼接文件名
    18. 关于UIWebView 的一些设置(背景色/禁用粘贴复制/关闭放大镜)

    1. 给UITableView 定制headView 字体大小 和 字体颜色 (NSMutableAttributedString)
    HeadView .png
    -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
        UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, SCREEN_W, 20)];
        NSArray *titleArray = @[@"| 热门推荐  >",@"| 新品推荐  >",@"| 排行榜  >",@"| 主题推荐  >"];
        NSString * title = titleArray[section];
        NSMutableAttributedString * mutableArrti = [[NSMutableAttributedString alloc]initWithString:title attributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:18],NSForegroundColorAttributeName:[UIColor orangeColor]}];
        label.attributedText = mutableArrti;
        return label;
    }
    

    2.针对UICollectionViewcell的 定制问题

    发布.gif
    如果一个UICollectioncell 是整个屏幕大小, 左右滑动时是切换 collectionViewcell. 例如: 现在一个collectionView 里面有三个cell, 分别为(关注模块(AttentionView), 推荐模块(RecommendView), 最新模块(NewesView)) .这三个cell, 都是自己手写的, 不是用XIB,拖出来的.

    操作步骤:
    第一步:collectionView 注册cell

     //  注册三种cell
    [_collectionView registerClass:[RecommendView class] forCellWithReuseIdentifier:@"RecommendView"];
    [_collectionView registerClass:[AttentionView class] forCellWithReuseIdentifier:@"AttentionView"];
    [_collectionView registerClass:[NewesView class] forCellWithReuseIdentifier:@"NewesView"];
    

    第二步: 遵守协议,实现协议方法(简略一下,在这里只写了cellForItemAtIndexPathsizeForItemAtIndexPath: [控制cell的大小的]) 和 这两个方法

    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    
        NSString * cellID = nil;
        if (indexPath.item == 0) {
            cellID = @"AttentionView";
        }else if(indexPath.item == 1){
            cellID = @"RecommendView";
        }else{
            cellID = @"NewesView";
        }
        UICollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellID forIndexPath:indexPath];
        return cell;
    
    }
    // 控制`cell` 的大小 为全屏(去掉底部`tabBar` 和 顶部 导航控制器)
    - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
        return CGSizeMake(SCREEN_W, SCREEN_H - 64 - 49);
    }
    

    第三步: 在各自的cell 里 搭建自己的界面, 实现自己的方法 (以RecommendView为例)

    // RecommendView.h文件 定义本页面需要展示的空间

    #import <UIKit/UIKit.h>
    @interface RecommendView : UICollectionViewCell <UITableViewDelegate, UITableViewDataSource>
    @property (nonatomic, strong) UITableView * tableView;
    @property (nonatomic, strong) NSMutableArray * dataArray;
    @property (nonatomic, strong) XTADScrollView * banView;
    @end
    

    // RecommendView.m文件 实现
    首先要重写 - (instancetype)initWithFrame:(CGRect)frame{ ... } 方法 在这里可以调用其他方法 (例如:网络请求)

    - (instancetype)initWithFrame:(CGRect)frame{
       self = [super initWithFrame:frame];
       if (self) {
           self.contentView.backgroundColor = [UIColor greenColor];
           // 进行网络请求
           [self loadData];
       }
       return self;
    }
    
    
    3.用懒加载初始化 属性
    #pragma mark - 懒加载
    - (NSMutableArray *)dataArray{
        if (!_dataArray) {
            _dataArray = [[NSMutableArray alloc]init];
        }
        return _dataArray;
    }
    
    - (XTADScrollView *)banView{
        if (!_banView) {
            _banView = [[XTADScrollView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_W, 150)];
            _banView.pageControlPositionType = pageControlPositionTypeRight;
            _banView.infiniteLoop = true;
        }
        return _banView;
    }
    
    - (UITableView *)tableView{
        if (!_tableView) {
            _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_W, SCREEN_H - 64 - 49) style:UITableViewStylePlain];
            _tableView.tableHeaderView = self.banView; // 指定头视图(轮播视图)
            _tableView.showsVerticalScrollIndicator = false;
            [_tableView registerNib:[UINib nibWithNibName:@"RecommentCell" bundle:nil] forCellReuseIdentifier:@"RecommentCell"];
            _tableView.dataSource = self;
            _tableView.delegate = self;
            [self.contentView addSubview:_tableView];
        }
        return _tableView;
    }
    
    4.实现UITableView 的协议方法
    #pragma mark - UITableView 协议方法
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
        return self.dataArray.count;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
        static NSString * cellID = @"RecommentCell";
        RecommentCell * cell = [tableView dequeueReusableCellWithIdentifier:cellID forIndexPath:indexPath];
        cell.delegate = self;
        cell.row = indexPath.row;
        cell.dataSource = self;
        //cell.selectedBackgroundView =  这个方法可以防止背景消失
        [cell.contentCollectionView reloadData];
        switch (indexPath.row) {
            case 0:
                cell.nameL.text = @"掌厨达人";
                cell.iconView.image = [UIImage imageNamed:@"达人.png"];
                break;
    
            case 1:
                cell.nameL.text = @"精选作品";
                cell.iconView.image = [UIImage imageNamed:@"精品.png"];
                break;
            default:{
                // 专题
                // 取专题模型对象
                TopicModel * model = self.dataArray[indexPath.row];
                cell.nameL.text = model.topicName;
                cell.iconView.image = [UIImage imageNamed:@"标签.png"];
            }
                break;
        }
        return cell;
    }
    
    
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
        return 190;
    }
    
    5.使用代理 反向传值的经典运用
    整个界面介绍.jpg RecommentCell样式.jpg TopicCell样式.jpg TalentCell样式.jpg

    使用数据说明:
    TalentModel 是一维数组
    MarrowModel 是一维数组
    TopicModel 是二维数据 其里面元素是 TopicDataModel

    现在 要显示数据 按以前做法就是 从前往后传值 (及正向传值, 但是存在问题, 如果用户频繁 刷新 , 数据多次引用, 造成内存浪费)所以我们采用代理反向传值 (根据位置 显示数据)

    在 RecommentCell 需要制定协议

    其 RecommentCell.h 代码

    #import <UIKit/UIKit.h>
    #import "TopicCell.h"
    #import "TalentCell.h"
    @class RecommentCell;
    // 不希望将数据源传递到 RecommentCell 中, 多次引用数据源, 而且还固化视图能够显示的数据模型
    
    // 协议 row 是行 index 是 列
    @protocol RecommentCellDataSource <NSObject>
    // 第几行返回多少个(获取数据源)
    - (NSInteger) numberOfItemsAtRow:(NSInteger)row;
    // collectionView 第几行 的第几个item  
    - (UICollectionViewCell *) collectionView:(UICollectionView *)collectionView cellForItemAtIndex:(NSInteger)index atRow:(NSInteger)row;
    // 返回第几行 size 的大小
    - (CGSize)sizeForItemAtRow:(NSInteger)row;
    @end
    // 
    @protocol RecommentCellDelegate <NSObject>
    //选中cell 的标题部分
    - (void)didSelectedTitleAtRow:(NSInteger)row;
    // 选中cell 的collectionView 中的cell
    // index 是列数 row 是 行 
    - (void)didSelectedItemAtInRow:(NSInteger)row atIndex:(NSInteger)index;
    
    @end
    
    @interface RecommentCell : UITableViewCell <UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
    
    @property (weak, nonatomic) IBOutlet UIImageView *iconView;
    @property (weak, nonatomic) IBOutlet UILabel *nameL;
    @property (weak, nonatomic) IBOutlet UICollectionView *contentCollectionView;
    
    // 代理指针
    @property (weak, nonatomic) id <RecommentCellDataSource> dataSource;
    @property (weak, nonatomic) id<RecommentCellDelegate> delegate;
    @property (nonatomic, assign) NSInteger row; //记录cell 所在的行
    
    @end
    
    RecommentCell.m 实现文件
    #import "RecommentCell.h"
    
    @implementation RecommentCell
    
    - (void)awakeFromNib {
        [super awakeFromNib];
        self.contentView.backgroundColor = GRAY_COLOR;
        [self.contentCollectionView registerNib:[UINib nibWithNibName:@"TopicCell" bundle:nil] forCellWithReuseIdentifier:@"TopicCell"];
        [self.contentCollectionView registerNib:[UINib nibWithNibName:@"TalentCell" bundle:nil] forCellWithReuseIdentifier:@"TalentCell"];
        self.contentCollectionView.delegate = self;
        self.contentCollectionView.dataSource = self;
        self.selectionStyle = UITableViewCellSelectionStyleNone;
        // 给cell 的标题部分, 添加点击手势
        UITapGestureRecognizer * gesture = [[UITapGestureRecognizer alloc]initWithTarget: self action:@selector(titleClicked:)];
        // 利用子视图找到父视图,然后添加手势
        [self.iconView.superview addGestureRecognizer:gesture];
    }
    
    - (void)titleClicked:(UITapGestureRecognizer *)gesture{
        if (self.delegate && [self.delegate respondsToSelector:@selector(didSelectedTitleAtRow:)]) {
            [self.delegate didSelectedTitleAtRow:self.row];
        }
    }
    
    - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
        if (self.delegate && [self.delegate respondsToSelector:@selector(didSelectedItemAtInRow:atIndex:)]) {
            [self.delegate didSelectedItemAtInRow:self.row atIndex:indexPath.item];
        }
    }
    
    
    - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
        [super setSelected:selected animated:animated];
    
        // Configure the view for the selected state
    }
    
    #pragma mark - UICollectionView 协议方法
    
    - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
        if (!self.dataSource) {
            return 0;
        }
        return [self.dataSource numberOfItemsAtRow:self.row];
    }
    
    
    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
        if (!self.dataSource) {
            return [[UICollectionViewCell alloc]init];
        }
        return [self.dataSource collectionView:collectionView cellForItemAtIndex:indexPath.item atRow:self.row];
    }
    
    
    - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
        if (!self.dataSource) {
            return CGSizeZero;
        }
        return [self.dataSource sizeForItemAtRow:self.row];
    }
    @end
    
    RecommendView.m 文件里成为代理指针, 遵守协议,并实现协议
    // 遵循协议
    @interface RecommendView()<RecommentCellDelegate, RecommentCellDataSource>
    
    @end
    
    @implementation RecommendView
    
    #pragma mark - 懒加载
    - (NSMutableArray *)dataArray{
        if (!_dataArray) {
            _dataArray = [[NSMutableArray alloc]init];
        }
        return _dataArray;
    }
    
    - (XTADScrollView *)banView{
        if (!_banView) {
            _banView = [[XTADScrollView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_W, 150)];
            _banView.pageControlPositionType = pageControlPositionTypeRight;
            _banView.infiniteLoop = true;
        }
        return _banView;
    }
    
    - (UITableView *)tableView{
        if (!_tableView) {
            _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_W, SCREEN_H - 64 - 49) style:UITableViewStylePlain];
            _tableView.tableHeaderView = self.banView;
            _tableView.showsVerticalScrollIndicator = false;
            [_tableView registerNib:[UINib nibWithNibName:@"RecommentCell" bundle:nil] forCellReuseIdentifier:@"RecommentCell"];
            _tableView.dataSource = self;
            _tableView.delegate = self;
            [self.contentView addSubview:_tableView];
        }
        return _tableView;
    }
    
    - (void)loadData{
        [HDManager startLoading];
        [TalentModel loadRecommendData:^(NSArray *banner, NSArray *array, NSError *error) {
            if (!error) {
                self.banView.imageURLArray = banner;
                [self.dataArray addObjectsFromArray:array];
                [self.tableView reloadData];
    
            }else{
                NSLog(@"请求出错");
            }
            [HDManager stopLoading];
        }];
    
    
    }
    
    
    #pragma mark - UITableView 协议方法
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
        return self.dataArray.count;
    }
    
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
        static NSString * cellID = @"RecommentCell";
        RecommentCell * cell = [tableView dequeueReusableCellWithIdentifier:cellID forIndexPath:indexPath];
        // 在这里成为代理
        cell.delegate = self;
        cell.row = indexPath.row; // 第几行
        cell.dataSource = self;
        //cell.selectedBackgroundView =  这个方法可以防止背景消失
        [cell.contentCollectionView reloadData];
        switch (indexPath.row) {
            case 0:
                cell.nameL.text = @"掌厨达人";
                cell.iconView.image = [UIImage imageNamed:@"达人.png"];
                break;
            case 1:
                cell.nameL.text = @"精选作品";
                cell.iconView.image = [UIImage imageNamed:@"精品.png"];
                break;
            default:{
                // 专题
                // 取专题模型对象
                TopicModel * model = self.dataArray[indexPath.row];
                cell.nameL.text = model.topicName;
                cell.iconView.image = [UIImage imageNamed:@"标签.png"];
            }
                break;
        }
        return cell;
    }
    
    
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
        return 190;
    }
    
    
    - (instancetype)initWithFrame:(CGRect)frame{
        self = [super initWithFrame:frame];
        if (self) {
            self.contentView.backgroundColor = [UIColor greenColor];
            // 进行网络请求
            [self loadData];
        }
        return self;
    }
    
    
    
    #pragma mark -  实现RecommendCell 的协议方法
    
    - (NSInteger)numberOfItemsAtRow:(NSInteger)row{
        switch (row) {
            case 0:// 达人
            case 1: // 精选作品
            {
                NSArray * array = self.dataArray[row];
                return array.count;
    
            }
                break;
            default:{
                // 专题
                TopicModel * topic = self.dataArray[row]; // 模型嵌套数组
                return topic.data.count;
            }
                break;
        }
    }
    
    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndex:(NSInteger)index atRow:(NSInteger)row{
        // row 行
        NSString * cellID = nil;
        if (row == 0) {
            cellID = @"TalentCell";
            // 取出达人数据
            NSArray * array = self.dataArray[row];
            // 取出达人模型对象
            TalentModel * talent = array[index];
            // 创建 复用 cell
            TalentCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellID forIndexPath:[NSIndexPath indexPathForItem:index inSection:0]];
            // 设置头像
            [cell.headImage sd_setImageWithURL:[NSURL URLWithString:talent.headImg] placeholderImage:[UIImage imageNamed:@"达人.png"]];
            cell.nickL.text = talent.nick;
            cell.fansL.text = [NSString stringWithFormat:@"粉丝:%@",talent.tongjiBeFollow];
            cell.fansL.textColor = TEXT_GRAYCOLOR;
            return cell;
        }else{
            cellID = @"TopicCell";
            TopicCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellID forIndexPath:[NSIndexPath indexPathForItem:index inSection:0]];
            if (row == 1) {
                // 精选作品
                NSArray * array = self.dataArray[row];
                MarrowModel * model = array[index];
                [cell.dishImage sd_setImageWithURL:[NSURL URLWithString:model.image]];
            }else{
                // 专题
                TopicModel * model = self.dataArray[row];
                // 取出专题data 小模型
                TopicDataModel * dataModel = model.data[index];
                // 设置对应的图片
                [cell.dishImage sd_setImageWithURL:[NSURL URLWithString:dataModel.image]];
            }
            return cell;
        }
    
    }
    
    
    - (CGSize)sizeForItemAtRow:(NSInteger)row{
        if (row == 0) {
    
            return CGSizeMake(120, 140);
        }else{
    
            return CGSizeMake(150, 150);
        }
    }
    
    - (void)didSelectedTitleAtRow:(NSInteger)row{
        NSLog(@"点击 %ld 行的标题",row);
        UIViewController * destinationViewController = nil;
        switch (row) {
            case 0:
                // 达人列表
            {
                destinationViewController = [[TalentListViewController alloc]init];
            }
                break;
            case 1: //精选作品
            {
                //            destinationViewController = [创建精选作品的viewController 对象]
            }
                break;
    
            default:
                // 所有专题
            {
                //destinationViewController = [创建专题作品的viewController 对象]
            }
                break;
        }
        if (self.delegate && [self.delegate respondsToSelector:@selector(pushViewController:)]) {
            [self.delegate pushViewController:destinationViewController];
        }
    }
    
    - (void)didSelectedItemAtInRow:(NSInteger)row atIndex:(NSInteger)index{
        NSLog(@"点击 %ld 行的 第 %ld 个 item",row,index);
        UIViewController * destinationViewController = nil;
        switch (row) {
            case 0://
            {
                TalentViewController * talent = [[TalentViewController alloc]init];
                // 取出模型 --> 赋值
                NSArray * array = self.dataArray[row];
                TalentModel * talentModel = array[index];
                talent.nick = talentModel.nick;
                talent.userId = talentModel.userId; // 用去请求达人详情
                talent.navigationItem.title = [NSString stringWithFormat:@"达人:%@",talent.nick];
                // 用一个父类指针 指向子类对象
                destinationViewController = talent;
            }
                break;
            case 1:
                // 取 精选作品的数据, 给相应的目标ViewController 的必要的属性赋值
                break;
    
            default:
                // 取 专题相关的模型数据 给目标viewController 的必要属性赋值
                break;
        }
        if (self.delegate && [self.delegate respondsToSelector:@selector(pushViewController:)]) {
            [self.delegate pushViewController:destinationViewController];
        }
    }
    @end
    
    6. 给 UIView 某几个角添加圆角
     /**
     *   给 UIView 某几个角添加圆角
     *
     *  @param aView    输入view
     *  @param aCorners 要添加圆角的角(方向)
     *  @param aSize    圆角size
     */
    
    给UITableView 加圆角
    给UITableView 加圆角 .png
    // 在 viewDidLoad() 里面实现
    override func viewDidLoad() {
            super.viewDidLoad()
            self.view.backgroundColor = UIColor.brown
            self.tableView.reloadData()
    
            // 使用贝塞尔曲线(实现代码)
            let maskPath = UIBezierPath.init(roundedRect: self.tableView.bounds, byRoundingCorners: [.topLeft,.topRight,.bottomLeft,.bottomRight], cornerRadii: CGSize.init(width: 20, height: 20))
            let maskLayer = CAShapeLayer()
            maskLayer.frame = self.tableView.bounds
            maskLayer.path = maskPath.cgPath
            self.tableView.layer.mask = maskLayer
        }
    
    给cell 添加圆角
    给UITableViewCell 添加圆角.png
    // 在willDisplay 实现
    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    //  要添加圆角的角(方向)用一个数组[左上,左下,右上, 右下]
            let maskPath = UIBezierPath.init(roundedRect: cell.bounds, byRoundingCorners: [.topRight,.topLeft,.bottomRight,.bottomLeft], cornerRadii: CGSize.init(width: 10, height: 10))
            let maskLayer = CAShapeLayer()
            maskLayer.frame = cell.bounds
            maskLayer.path = maskPath.cgPath
            cell.layer.mask = maskLayer
        }
    
    总结
    // 给 UIView 某几个角添加圆角
    // 根据矩形画带圆角的曲线
    //[UIBezierPath bezierPathWithRoundedRect:writeFourCodeTextField.bounds byRoundingCorners:UIRectCornerTopRight | UIRectCornerBottomRight cornerRadii:CGSizeMake(writeFourCodeTextField.bounds.size.height / 2, writeFourCodeTextField.bounds.size.height / 2)];
        UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:aView.bounds byRoundingCorners:aCorners cornerRadii:aSize];
        CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
        maskLayer.frame = aView.bounds;
        maskLayer.path = maskPath.CGPath;
        aView.layer.mask = maskLayer;
    
    7.颜色宏
    // 颜色
    // 第一种方法
    #define PYColor(r,g,b) [UIColor colorWithRed:(r/255.0) green:(g/255.0) blue:(b/255.0) alpha:1.0]
    #define PYRandomColor  PYColor(arc4random_uniform(256),arc4random_uniform(256),arc4random_uniform(256))
    
    // 第二种方法
    #define RGB_Color(r,g,b)    RGBA_Color(r,g,b,1)
    #define RGBA_Color(r,g,b,a) ([UIColor colorWithRed:r/255 green:g/255 blue:b/255 alpha:a])
    #define kDefaultTintColor   RGB_Color(3, 116, 255)
    
    8. 弱引用指针 (Swift OC 版)
    // swift
    weak var weakSelf = self
    // OC
    __weak typeof(self) weakSelf  = self;
    __weak ViewController *weakSelf = self;
    
    12.视频播放器 (根据手机系统不同版本)

    引用头文件
    #import <AVFoundation/AVFoundation.h>
    //低版本
    #import <MediaPlayer/MPMoviePlayerViewController.h>
    //高版本(iOS 8.0以后)
    #import <AVKit/AVKit.h>
    #import <AVKit/AVPlayerViewController.h>

    -(void)play
    {
        NSString *url = @"http://v.iask.com/v_play_ipad.php?vid=139074949";
        //4988
        //4999
        
        //__IPHONE_OS_VERSION_MAX_ALLOWED 获取当设备的iOS 系统版本
        //__IPHONE_8_0 代表iOS 8.0
    #if __IPHONE_OS_VERSION_MAX_ALLOWED <= __IPHONE_8_0
        MPMoviePlayerViewController *mpVC = [[MPMoviePlayerViewController alloc]initWithContentURL:[NSURL URLWithString:url]];
        [self presentViewController:mpVC animated:YES completion:nil];
        //MPMoviePlayerViewController 9.0以后苹果不推荐使用
    #else
        //创建播放器
        AVPlayer * player = [AVPlayer playerWithURL:[NSURL URLWithString:url]];
        //创建视频播放控制器
        AVPlayerViewController *avVC = [[AVPlayerViewController alloc]init];
        avVC.player = player;
        [self presentViewController:avVC animated:YES completion:nil];
    
    #endif
    
    13. isKindOfClass与isMemberOfClass区别
    isMemberOfClass 一个对象是否是某个类的实例
    isKindOfClass 一个对象是否是一个类的实例,或者是派生自该类的类的实例
    
    14.有关Masonry , 自动布局
    // 为了实现等宽等高的效果
    [imageView mas_makeConstraints:^(MASConstraintMaker *make) {
                        make.left.mas_equalTo(self.lastImageView.mas_right).offset(padding);
                        make.top.mas_equalTo(self.lastImageView);
                        make.width.mas_equalTo(self.mas_width).multipliedBy(0.333).offset(-padding);
                        make.height.mas_equalTo(imageView.mas_width);  // 实现等宽等高
                    }];
    
    // 实现 四周边距
    [_memberIcon mas_makeConstraints:^(MASConstraintMaker *make) {
            UIEdgeInsets edge = UIEdgeInsetsMake(0, 0, 0, 0);
            make.edges.mas_equalTo(edge);
        }];
    
    // leadSpacing 
    // tailSpacing 尾间距
    
    15.图片填充(使用图片路径 填充)
    // 方式一
    _iconImage.image = [UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@“defaultImage.png"]];
    // 方式二
    _iconImage.image = [UIImage imageName:@"defaultImage.png"];
    
    图片加载方式.png
    16.给图片添加毛玻璃效果
        // 添加毛玻璃效果
        UIToolbar *toolBar = [[UIToolbar alloc]init];
        // 设置frame
        toolBar.frame = imageView.bounds;
        // 设置样式
        toolBar.barStyle = UIBarStyleBlack;
        toolBar.alpha = 0.9;
        [imageView addSubview:toolBar];
    
    17. 根据时间拼接文件名
    int x = arc4random() % 100000;
    NSTimeInterval time = [[NSDate date] timeIntervalSince1970];
    NSString *fileName = [NSString stringWithFormat:@"%d%d",(int)time,x];
    
    18. 关于UIWebView 的一些设置(背景色/禁用粘贴复制/关闭放大镜)
     //页面背景色
    - (void)webViewDidFinishLoad:(UIWebView *)webView{
        [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.background='#F2F2F2'"];
        [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"];
        [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"];
    }
    

    相关文章

      网友评论

          本文标题:一些常用的代码(二)

          本文链接:https://www.haomeiwen.com/subject/vodxmttx.html