IOS 杂笔-11(实现在外部无法改变UIView的size)

Posted 吴雨欣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS 杂笔-11(实现在外部无法改变UIView的size)相关的知识,希望对你有一定的参考价值。

我想题目说的或许不是很清楚,那么现在我详细介绍一下这篇随笔内容。

在外部无法改变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)的主要内容,如果未能解决你的问题,请参考以下文章

IOS 杂笔-13(appearance的巧妙使用)

IOS 杂笔-14(被人遗忘的owner)

IOS 杂笔-14(被人遗忘的owner)

IOS 杂笔-8(loadViewviewDidLoadviewWillAppearviewDidAppear等简介)

IOS 杂笔-17(堆区栈区等)

如何在外部测试 Red5 服务器