Autoresize UIView to fit subviews
- @interface UIView (resizeToFit)
- -(void)resizeToFitSubviews;
- -(void)resizeHightToFitSubviews;
- -(void)resizeWidthToFitSubviews;
- @end
- @implementation UIView (resizeToFit)
- -(void)resizeToFitSubviews
- {
- float w = 0;
- float h = 0;
- for (UIView *v in [self subviews]) {
- float fw = v.frame.origin.x + v.frame.size.width;
- float fh = v.frame.origin.y + v.frame.size.height;
- w = MAX(fw, w);
- h = MAX(fh, h);
- }
- [self setFrame:CGRectMake(self.frame.origin.x, self.frame.origin.y, w, h)];
- }
- -(void)resizeHightToFitSubviews{
- float h = 0;
- for (UIView *v in [self subviews]) {
- float fh = v.frame.origin.y + v.frame.size.height;
- h = MAX(fh, h);
- }
- [self setFrame:CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width, h)];
- }
- -(void)resizeWidthToFitSubviews{
- float w = 0;
- for (UIView *v in [self subviews]) {
- float fw = v.frame.origin.x + v.frame.size.width;
- w = MAX(fw, w);
- }
- [self setFrame:CGRectMake(self.frame.origin.x, self.frame.origin.y, w, self.frame.size.height)];
- }
- @end
enter image description here Code is worth a billion words. Here is the solution: @interface UIView (UIView_Expanded) - (void)resizeToFitSubviews;@end
@implementation UIView (UIView_Expanded) - (void)resizeToFitSubviews { // 1 - calculate size CGRect r = CGRectZero; for (UIView *v in [self subviews]) { r = CGRectUnion(r, v.frame); } // 2 - move all subviews inside CGPoint fix = r.origin; for (UIView *v in [self subviews]) { v.frame = CGRectOffset(v.frame, -fix.x, -fix.y); } // 3 - move frame to negate the previous movement r = CGRectOffset(r, fix.x, fix.y); [self setFrame:r];}
@end
版权声明:本文为博主原创文章,未经博主允许不得转载。
Autoresize UIView to fit subviews的更多相关文章
for(UIView *view in subviews){ if(view.tag == 998) { //根据tag判断 } if([view isKindOfClass:[UIImageView ...
UIView之常用方法 将一个视图添加为子视图,并使之在最上面显示 -(void)addSubView:(UIView *)view; 将指定子视图移动到顶部 -(void)bringSubViewT ...
例子1 Controller的view中有一个tableView,tableView的cell上有一个button,现在需要将button的frame转为在Controller的view中的frame ...
前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UITableView : UIScrollView <NSCoding> @available(iOS ...
对MBProgressHUD进行二次封装并精简使用 https://github.com/jdg/MBProgressHUD 几个效果图: 以下源码是MBProgressHUD支持最新的iOS8的版本 ...
前言 iOS 7之后,苹果提供了自定义转场动画的API,我们可以自己去定义任意动画效果.本篇为笔者学习push.pop自定义转场效果的笔记,如何有任何不正确或者有指导意见的,请在评论中留下您的宝贵意见 ...
使用递归: - (void)listSubviewsOfView:(UIView *)view { // Get the subviews of the view NSArray *subviews ...
记录下一些不常用技巧,以防忘记,复制用. 1.获取当前的View在Window的frame: UIWindow * window=[[[UIApplication sharedApplication] ...
"UITableView" iOS开发中重量级的控件之一;在日常开发中我们大多数会选择自定Cell来满足自己开发中的需求, 但是有些时候Cell也是可以不自定义的(比如某一个简单的 ...
随机推荐
c/c++的内存布局:堆,栈,自由存储区(与堆的区别),全局/静态存储区,常量存储区(字符串常量,const常量) http://www.cnblogs.com/QG-whz/p/5060894.ht ...
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[BASIS系列]SAP BASIS模块-后台配 ...
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 总结常用术语简 ...
import re body=r''' {"id":${BXbiztripinfoID_10},"msg":"1234测试审批${__UUID}&qu ...
1.什么是Quartz Quartz是一个任务调度框架,借助Cron表达式,Quartz可以支持各种复杂的任务调度.JDK中也提供了简单的任务调度,java.util.Timer. Quartz的三大 ...
题面 传送门 分析 这种数据范围比较大的题最好的方法是先暴力打表找规律 通过打表,可以发现规律如下: 定义\(x=2^{log_2a+1}\) (注意,cf官方题解这里写错了,官方题解中定义\(x=2 ...
NumPy 比一般的 Python 序列提供更多的索引方式.除了之前看到的用整数和切片的索引外,数组可以由整数数组索引.布尔索引及花式索引. 1.整数数组索引 1.1 以下实例获取数组中(0,0),( ...
测试文件:https://adworld.xctf.org.cn/media/task/attachments/8ef2f7ef55c240418f84b3c514a7a28a 准备 得知 64位文件 ...
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
不涉及第三个变量交换两个变量的值 方法1:使用加减法 <?php $a = 1; $b = 2; $a = $a+$b; $b = $a-$b; $a = $a-$b; printf(" ...