热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

篇首语:本文由编程笔记#小编为大家整理,主要介绍了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 不定参数 详解 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • 本文介绍了如何在Spring框架中使用AspectJ实现AOP编程,重点讲解了通过注解配置切面的方法,包括方法执行前和方法执行后的增强处理。阅读本文前,请确保已安装并配置好AspectJ。 ... [详细]
  • 本文介绍了Go语言中正则表达式的基本使用方法,并提供了一些实用的示例代码。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Loope ... [详细]
  • Java 初次编程练习
    任务要求:设计一个类,包含若干基本属性和至少两个方法(可以从日常生活场景中提取)。在类中实现两个具有不同参数的构造方法。另外,设计一个包含 main 方法的类,用于测试和应用上述类。此作业需编写并调试通过。 ... [详细]
  • 使用Tkinter构建51Ape无损音乐爬虫UI
    本文介绍了如何使用Python的内置模块Tkinter来构建一个简单的用户界面,用于爬取51Ape网站上的无损音乐百度云链接。虽然Tkinter入门相对简单,但在实际开发过程中由于文档不足可能会带来一些不便。 ... [详细]
  • 在 iOS 开发中,内存管理是一个至关重要的环节。初学者常常因为内存管理不当导致程序崩溃。本文将详细介绍 iOS 中内存的分配与释放机制,并提供一些实用的技巧。 ... [详细]
author-avatar
小永远佳瞳_186
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有