zoukankan      html  css  js  c++  java
  • 06-模仿系统的UIImageView

    06-模仿系统的UIImageView

    整体思路:
    我们想要模仿系统的UIImageView,我们必须得要知道系统的UIView怎么用.
    系统的用法是创建一个UIImageView对象,设置frame,给它传递一个UIImage,再把它添加到一个View上面就可以了.
    可以切换图片.
    这是第一个用法.
    第二种用法,就是在创建的时候直接传递一个UIImage对象,使用initWithImage的方法进行创建一个UImageView的方式
    用这种做法创建出来的UIImageView它的尺寸大小和原始图片的尺寸大小一样大.
    所以我们自己的UIImageView也要具有这些功能.
    
    实现步骤:
    第一步:新建一个UIView,起名ZYQImageView.
    第二步:给ZYQImageView添加一个UIImage属性,供外界传递图片
    第三步:在DrawRect方法当中把传递的图片绘制到View上面
          绘制方法为:[_image drawInRect:rect],绘制的图片尺寸大小和UIView的尺寸大小一样大.
    第四步:重写UIImage属性的set方法,在set方法当中让View重新绘制.目的为了能够办到切换图片.
    第五步:提供一个- (instancetype)initWithImage:(UIImage *)image方法.
          在这个方法当中重写init方法
          在初始化时,让View尺寸和图片的实际大小一样大.
          然后再给UIImage属性赋值.
          这样在绘制图片的时候,显示出来的View已经有尺寸了, 尺寸大小和图片的实际大小一样大.
    
            具体代码实现:
            - (instancetype)initWithImage:(UIImage *)image{
            if (self = [super init]) {
                self.frame = CGRectMake(0, 0, image.size.width, image.size.height);
                _image = image;
            }
                return self;
            }
    
    
           -(void)setImage:(UIImage *)image{
              _image = image;
             [self setNeedsDisplay];
           }
    
           - (void)drawRect:(CGRect)rect {
                [_image drawInRect:rect];
           }
  • 相关阅读:
    redis
    Ubuntu 用VSFTP搭建FTP服务器
    ADO.NET中高效地使用数据库连接
    类型后面加问号 int?
    system.data.sqlclient.sqlexception:timeout expired
    BackgroundWorker超级详细的用法
    异步调用WCF服务,并将数据填入GridLookUpEdit中
    linq to entity报"不允许启动新事务,因为有其他线程正在该会话中运行."错误解决方法
    sql2005 数据库备份 对于服务器失败
    调用WCF服务返回list集合时出错的解决方法
  • 原文地址:https://www.cnblogs.com/zhoudaquan/p/5034424.html
Copyright © 2011-2022 走看看