1. 程式人生 > >IOS 雜筆-11(實現在外部無法改變UIView的size)

IOS 雜筆-11(實現在外部無法改變UIView的size)

ati oai 如果 com 測試 center 技術 ios res

我想題目說的或許不是很清楚,那麽現在我詳細介紹一下這篇隨筆內容。

在外部無法改變UIVIew控件的size。

這裏說是UIView,但是事實上,是大多數控件而絕非僅UIView。

想要實現在外部無法改變size該怎麽做呢。

首先是重寫setFrame使其規定本身size,如下

技術分享
//
//  TestView.m
//  CX-實現在外部無法改變UIView的Size
//
//  Created by ma c on 16/3/25.
//  Copyright ? 2016年 xubaoaichiyu. All rights reserved.
//

#import "TestView.h"

@implementation TestView

-(void)setFrame:(CGRect)frame{
    
    frame.size = CGSizeMake(100, 100);
    
    [super setFrame:frame];
}

@end
技術分享

重寫setFrame後我們可以進行測試。

在VC裏我吧TestVIew的size 設置為{200,200}。

技術分享

由此可見,在外部無法改變UITestView的Size

但是下面的結果卻並非如此

我們先是設置UITestView的Center。

然後設置UITestView的Bounds

技術分享
//
//  ViewController.m
//  CX-實現在外部無法改變UIView的Size
//
//  Created by ma c on 16/3/25.
//  Copyright ? 2016年 xubaoaichiyu. All rights reserved.
//

#import "ViewController.h"
#import "TestView.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    
    TestView * view = [[TestView alloc]init];
    
    view.center = self.view.center;
    
    view.bounds = CGRectMake(0, 0, 200, 200);
    
    [self.view addSubview:view];
    
    NSLog(@"%@",NSStringFromCGRect(view.frame));
    
}



@end
技術分享

結果如下

技術分享

可見:UITestView 的size有所改變,沒關系。

我們再重寫一下bounds。

技術分享
//
//  TestView.m
//  CX-實現在外部無法改變UIView的Size
//
//  Created by ma c on 16/3/25.
//  Copyright ? 2016年 xubaoaichiyu. All rights reserved.
//

#import "TestView.h"

@implementation TestView

-(void)setFrame:(CGRect)frame{
    
    frame.size = CGSizeMake(100, 100);
    
    [super setFrame:frame];
}
-(void)setBounds:(CGRect)bounds{
    
    bounds.size = CGSizeMake(100, 100);
    
    [super setBounds:bounds];
}
@end
技術分享

結果如下:

技術分享
//
//  TestView.m
//  CX-實現在外部無法改變UIView的Size
//
//  Created by ma c on 16/3/25.
//  Copyright ? 2016年 xubaoaichiyu. All rights reserved.
//

#import "TestView.h"

@implementation TestView

-(void)setFrame:(CGRect)frame{
    
    frame.size = CGSizeMake(100, 100);
    
    [super setFrame:frame];
}
-(void)setBounds:(CGRect)bounds{
    
    bounds.size = CGSizeMake(100, 100);
    
    [super setBounds:bounds];
}
@end
技術分享

由此得出結論,如果想要是UIView控件在外部無法改變size,我們只需要重寫frame,bounds即可。

同理,我們還可以實現一些其他的操作。

IOS 雜筆-11(實現在外部無法改變UIView的size)