zoukankan      html  css  js  c++  java
  • UIView Extra

    //
    //  UIView+Extra.h
    //
    //  Created by jzl on 15/3/13.
    //  Copyright (c) 2015年 JZL. All rights reserved.
    //

    #import <UIKit/UIKit.h>

    @interface UIView (Extra)


    CGPoint CGRectGetCenter(CGRect rect);
    CGRect  CGRectMoveToCenter(CGRect rect, CGPoint center);

    // ------------------------------------------------------------

    @property (nonatomic) CGPoint origin;
    @property (nonatomic) CGSize size;

    @property (readonly) CGPoint bottomLeft;
    @property (readonly) CGPoint bottomRight;
    @property (readonly) CGPoint topRight;

    // ------------------------------------------------------------

    /// height
    @property (nonatomic) CGFloat height;
    /// width
    @property (nonatomic) CGFloat width;
    /// top
    @property (nonatomic) CGFloat top;
    /// left
    @property (nonatomic) CGFloat left;
    /// bottom
    @property (nonatomic) CGFloat bottom;
    /// right
    @property (nonatomic) CGFloat right;

    // ------------------------------------------------------------

    /// centerX
    @property (nonatomic) CGFloat centerX;
    /// centerY
    @property (nonatomic) CGFloat centerY;

    // ------------------------------------------------------------

    - (void) moveBy: (CGPoint) delta;
    - (void) scaleBy: (CGFloat) scaleFactor;
    - (void) fitInSize: (CGSize) aSize;

    // ------------------------------------------------------------

    ///< 移除此view上的所有子视图
    - (void)removeAllSubviews;

    @end

    //
    //  UIView+Extra.m
    //
    //  Created by jzl on 15/3/13.
    //  Copyright (c) 2015年 JZL. All rights reserved.
    //

    #import "UIView+Extra.h"

    @implementation UIView (Extra)

    CGPoint CGRectGetCenter(CGRect rect)
    {
        CGPoint pt;
        pt.x = CGRectGetMidX(rect);
        pt.y = CGRectGetMidY(rect);
        return pt;
    }

    CGRect CGRectMoveToCenter(CGRect rect, CGPoint center)
    {
        CGRect newrect = CGRectZero;
        newrect.origin.x = center.x-CGRectGetMidX(rect);
        newrect.origin.y = center.y-CGRectGetMidY(rect);
        newrect.size = rect.size;
        return newrect;
    }

    // ------------------------------------------------------------

    // Retrieve and set the origin
    - (CGPoint) origin
    {
        return self.frame.origin;
    }

    - (void) setOrigin: (CGPoint) aPoint
    {
        CGRect newframe = self.frame;
        newframe.origin = aPoint;
        self.frame = newframe;
    }

    // Retrieve and set the size
    - (CGSize) size
    {
        return self.frame.size;
    }

    - (void) setSize: (CGSize) aSize
    {
        CGRect newframe = self.frame;
        newframe.size = aSize;
        self.frame = newframe;
    }

    // Query other frame locations
    - (CGPoint) bottomRight
    {
        CGFloat x = self.frame.origin.x + self.frame.size.width;
        CGFloat y = self.frame.origin.y + self.frame.size.height;
        return CGPointMake(x, y);
    }

    - (CGPoint) bottomLeft
    {
        CGFloat x = self.frame.origin.x;
        CGFloat y = self.frame.origin.y + self.frame.size.height;
        return CGPointMake(x, y);
    }

    - (CGPoint) topRight
    {
        CGFloat x = self.frame.origin.x + self.frame.size.width;
        CGFloat y = self.frame.origin.y;
        return CGPointMake(x, y);
    }

    // ------------------------------------------------------------

    // Retrieve and set height, width, top, bottom, left, right
    - (CGFloat) height
    {
        return self.frame.size.height;
    }

    - (void) setHeight: (CGFloat) newheight
    {
        CGRect newframe = self.frame;
        newframe.size.height = newheight;
        self.frame = newframe;
    }

    - (CGFloat) width
    {
        return self.frame.size.width;
    }

    - (void) setWidth: (CGFloat) newwidth
    {
        CGRect newframe = self.frame;
        newframe.size.width = newwidth;
        self.frame = newframe;
    }

    - (CGFloat) top
    {
        return self.frame.origin.y;
    }

    - (void) setTop: (CGFloat) newtop
    {
        CGRect newframe = self.frame;
        newframe.origin.y = newtop;
        self.frame = newframe;
    }

    - (CGFloat) left
    {
        return self.frame.origin.x;
    }

    - (void) setLeft: (CGFloat) newleft
    {
        CGRect newframe = self.frame;
        newframe.origin.x = newleft;
        self.frame = newframe;
    }

    - (CGFloat) bottom
    {
        return self.frame.origin.y + self.frame.size.height;
    }

    - (void) setBottom: (CGFloat) newbottom
    {
        CGRect newframe = self.frame;
        newframe.origin.y = newbottom - self.frame.size.height;
        self.frame = newframe;
    }

    - (CGFloat) right
    {
        return self.frame.origin.x + self.frame.size.width;
    }

    - (void) setRight: (CGFloat) newright
    {
        CGFloat delta = newright - (self.frame.origin.x + self.frame.size.width);
        CGRect newframe = self.frame;
        newframe.origin.x += delta ;
        self.frame = newframe;
    }

    // ------------------------------------------------------------

    - (CGFloat)centerX {
        return self.center.x;
    }

    - (void)setCenterX:(CGFloat)centerX {
        self.center = CGPointMake(centerX, self.center.y);
        return;
    }

    - (CGFloat)centerY {
        return self.center.y;
    }

    - (void)setCenterY:(CGFloat)centerY {
        self.center = CGPointMake(self.center.x, centerY);
        return;
    }

    // ------------------------------------------------------------

    // Move via offset
    - (void) moveBy: (CGPoint) delta
    {
        CGPoint newcenter = self.center;
        newcenter.x += delta.x;
        newcenter.y += delta.y;
        self.center = newcenter;
    }

    // Scaling
    - (void) scaleBy: (CGFloat) scaleFactor
    {
        CGRect newframe = self.frame;
        newframe.size.width *= scaleFactor;
        newframe.size.height *= scaleFactor;
        self.frame = newframe;
    }

    // Ensure that both dimensions fit within the given size by scaling down
    - (void) fitInSize: (CGSize) aSize
    {
        CGFloat scale;
        CGRect newframe = self.frame;
        
        if (newframe.size.height && (newframe.size.height > aSize.height))
        {
            scale = aSize.height / newframe.size.height;
            newframe.size.width *= scale;
            newframe.size.height *= scale;
        }
        
        if (newframe.size.width && (newframe.size.width >= aSize.width))
        {
            scale = aSize.width / newframe.size.width;
            newframe.size.width *= scale;
            newframe.size.height *= scale;
        }
        
        self.frame = newframe;    
    }

    // ------------------------------------------------------------

    ///< 移除此view上的所有子视图
    - (void)removeAllSubviews {
        for (UIView *view in self.subviews) {
            [view removeFromSuperview];
        }
        return;
    }

    @end

  • 相关阅读:
    opensuse使用zypper安装软件
    补习系列(1)-springboot项目基础搭建课
    补习系列-springboot-使用assembly进行项目打包
    log4j2 使用纪要
    mongos-sharding连接池配置
    maven-代码风格检查工具
    mtools-你可能没用过的mongodb神器
    mongodb分布式集群搭建手记
    mongodb分片扩展架构
    mongodb副本集高可用架构
  • 原文地址:https://www.cnblogs.com/jzlblog/p/4334813.html
Copyright © 2011-2022 走看看