UIView+WKCategory

2514 단어
Foundouction 프레임 안의 프레임 속성은 CGRect 유형이고 CGRect는 구조체이다. 구조체 유형 안의 어떤 속성을 수정하려면 직접 수정할 수 없다. 반드시 먼저 꺼내서 다시 값을 부여하고 3부작을 완성해야 한다. 정말 번거롭다. 정확히 말하면'대상의 구조체 속성을 직접 수정할 수 없는 구성원'이지만'대상의 구조체 속성'을 수정할 수 있다.
따라서 해결 방안은 일반적으로 기존 대상의 구조체 속성을 임시 구조체에 부여한 다음에 임시 구조체 안의 구성원을 수정한 다음에 이 수정된 구조체 변수를 직접 기존 대상의 구조체 변수에 부여하는 것이 수정된 것과 같다
UIView * view = [[UIView alloc]init];
view.frame.origin.x = 100;
CGRect frame = view.frame;
frame.origin.x = 100;
view.frame = frame;

category 분류 UIView는 몇 개의 속성 x, y, height,width를 추가합니다.이 몇 가지 속성은 get 방법과 set 방법을 각각 실현한다.이렇게 하면 프레임은 그를 떠날 수 있다. 이렇게 분류된 모든 계승 UIView의 클래스에 이 몇 가지 속성을 가져와서 사이즈와 좌표에 직접 값을 부여할 수 있다. 중간 변수를 도입하지 않아도 빠르고 편리하다.
  • UIView+WKCategory.h
    #import 
     @interface UIView (WKCategory)
     @property (assign, nonatomic) CGFloat x;
     @property (assign, nonatomic) CGFloat y;
     @property (assign, nonatomic) CGFloat width;
     @property (assign, nonatomic) CGFloat height;
     @property (assign, nonatomic) CGSize size;
     @property (assign, nonatomic) CGPoint origin;
     @end
    
  • UIView+WKCategory.m #import "UIView+WKCategory.h"
      @implementation UIView (WKCategory)
    
        -(void)setX:(CGFloat)x{
              CGRect frame = self.frame;
             frame.origin.x = x;
            self.frame = frame;
         }
    
       - (CGFloat)x
         {
           return self.frame.origin.x;
           }
    
        -(void)setY:(CGFloat)y
           {
          CGRect frame = self.frame;
           frame.origin.y = y;
          self.frame = frame;
           }
    
       - (CGFloat)y
         {
          return self.frame.origin.y;
          }
    
      -(void)setWidth:(CGFloat)width{
          CGRect frame = self.frame;
          frame.size.width = width;
          self.frame = frame;
         }
    
      - (CGFloat)width
          {
          return self.frame.size.width;
          }
    
        - (void)setHeight:(CGFloat)height
           {
            CGRect frame = self.frame;
            frame.size.height = height;
            self.frame = frame;
           }
    
        - (CGFloat)height
           {
           return self.frame.size.height;
           }
    
        - (void)setSize:(CGSize)size
            {
              CGRect frame = self.frame;
               frame.size = size;
              self.frame = frame;
             }
    
        - (CGSize)size
        {
          return self.frame.size;
        }
    
       - (void)setOrigin:(CGPoint)origin
           {
          CGRect frame = self.frame;
            frame.origin = origin;
           self.frame = frame;
          }
    
         - (CGPoint)origin
         {
          return self.frame.origin;
          }
    
          @end
    
  • 좋은 웹페이지 즐겨찾기