• Uiview的常用height,width,top,right


    #import <UIKit/UIKit.h>

    CGPoint CGRectGetCenter(CGRect rect);

    CGRect  CGRectMoveToCenter(CGRect rect, CGPoint center);

    @interface UIView (ViewFrameGeometry)

    @property CGPoint origin;

    @property CGSize size;

    @property (readonly) CGPoint bottomLeft;

    @property (readonly) CGPoint bottomRight;

    @property (readonly) CGPoint topRight;

    @property CGFloat height;

    @property CGFloat width;

    @property CGFloat top;

    @property CGFloat left;

    @property CGFloat bottom;

    @property CGFloat right;

    - (void) setScaleFrame:(CGRect)rect_;

    - (void) moveBy: (CGPoint) delta;

    - (void) scaleBy: (CGFloat) scaleFactor;

    - (void) fitInSize: (CGSize) aSize;

    @end

    #import "UIViewExt.h"

    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;

    }

    @implementation UIView (ViewGeometry)

    // 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;

    }

    - (void) setScaleFrame:(CGRect)rect_ {

        NSLog(@"rect_.width = %f",rect_.size.width);

        NSLog(@"AUTOSIZE(rect_.size.width) = %f",AUTOSIZE(rect_.size.width));

        [self setFrame:CGRectMake(rect_.origin.x, rect_.origin.y, AUTOSIZE(rect_.size.width), AUTOSIZE(rect_.size.height))];

    }

    // 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;

    }

    @end

  • 相关阅读:
    C 语言 静态库和动态库的创建和应用
    C++ 中英文术语对照
    下午
    [转]内核 do_fork 函数源代码浅析
    关于C#反射机制,自己写的
    获取字符串中数字
    关于C#反射机制,来源于网络
    关于 Nhinernate 的one to one(转载)
    鼠标坐标的记录
    关于C#中hibernate.cfg.xml动态加载问题
  • 原文地址:https://www.cnblogs.com/scycool/p/5756749.html
Copyright © 2020-2023  润新知