#import <UIKit/UIKit.h> @interface UIView (Additon) /** * Shortcut for frame.origin.x. * * Sets frame.origin.x = left */ @property (nonatomic) CGFloat left; /** * Shortcut for frame.origin.y * * Sets frame.origin.y = top */ @property (nonatomic) CGFloat top; /** * Shortcut for frame.origin.x + frame.size.width * * Sets frame.origin.x = right - frame.size.width */ @property (nonatomic) CGFloat right; /** * Shortcut for frame.origin.y + frame.size.height * * Sets frame.origin.y = bottom - frame.size.height */ @property (nonatomic) CGFloat bottom; /** * Shortcut for frame.size.width * * Sets frame.size.width = width */ @property (nonatomic) CGFloat width; /** * Shortcut for frame.size.height * * Sets frame.size.height = height */ @property (nonatomic) CGFloat height; /** * Shortcut for frame.origin */ @property (nonatomic) CGPoint origin; /** * Shortcut for frame.size */ @property (nonatomic) CGSize size; @property (nonatomic) CGFloat centerX; @property (nonatomic) CGFloat centerY; - (id)subviewWithTag:(NSInteger)tag; - (UIViewController*)viewController; @end
#import "UIView+Additon.h" @implementation UIView (Additon) /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)left { return self.frame.origin.x; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setLeft:(CGFloat)x { CGRect frame = self.frame; frame.origin.x = x; self.frame = frame; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)top { return self.frame.origin.y; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setTop:(CGFloat)y { CGRect frame = self.frame; frame.origin.y = y; self.frame = frame; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)right { return self.left + self.width; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setRight:(CGFloat)right { if(right == self.right){ return; } CGRect frame = self.frame; frame.origin.x = right - frame.size.width; self.frame = frame; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)bottom { return self.top + self.height; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setBottom:(CGFloat)bottom { if(bottom == self.bottom){ return; } CGRect frame = self.frame; frame.origin.y = bottom - frame.size.height; self.frame = frame; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)centerX { return self.center.x; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setCenterX:(CGFloat)centerX { self.center = CGPointMake(centerX, self.center.y); } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)centerY { return self.center.y; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setCenterY:(CGFloat)centerY { self.center = CGPointMake(self.center.x, centerY); } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)width { return self.frame.size.width; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setWidth:(CGFloat)width { CGRect frame = self.frame; frame.size.width = width; self.frame = frame; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)height { return self.frame.size.height; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setHeight:(CGFloat)height { if(height == self.height){ return; } CGRect frame = self.frame; frame.size.height = height; self.frame = frame; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGPoint)origin { return self.frame.origin; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setOrigin:(CGPoint)origin { CGRect frame = self.frame; frame.origin = origin; self.frame = frame; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGSize)size { return self.frame.size; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setSize:(CGSize)size { CGRect frame = self.frame; frame.size = size; self.frame = frame; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (UIView*)descendantOrSelfWithClass:(Class)cls { if ([self isKindOfClass:cls]) return self; for (UIView* child in self.subviews) { UIView* it = [child descendantOrSelfWithClass:cls]; if (it) return it; } return nil; } - (id)subviewWithTag:(NSInteger)tag{ for(UIView *view in [self subviews]){ if(view.tag == tag){ return view; } } return nil; } - (UIViewController*)viewController { for (UIView* next = [self superview]; next; next = next.superview) { UIResponder* nextResponder = [next nextResponder]; if ([nextResponder isKindOfClass:[UIViewController class]]) { return (UIViewController*)nextResponder; } } return nil; } @end
相关推荐
在iOS开发中,`UIView`是构建用户界面的基础,几乎所有的可见元素都基于它。`UIView`不仅负责绘制和显示内容,还处理用户的交互事件。以下是对标题和描述中涉及的`UIView`知识点的详细解释: 1. **Bounds和Frame的...
UIView 动画 UIView动画
在iOS开发中,经常需要将一个UIView对象的内容转化为图片,以便于分享、存储或进行其他图形操作。这个过程涉及到的主要知识点是UIView的渲染和图片处理。以下是对这一主题的详细阐述。 首先,UIView是一个用于在...
UIView的生命周期对于理解iOS应用中视图的加载和管理至关重要。在开发iOS应用时,了解UIView及其子类的生命周期方法,可以让开发者合理地安排资源的分配和释放,优化应用的性能,以及提供更好的用户体验。 首先,...
在iOS开发中,UI设计往往追求独特且富有动态感的效果,其中UIView的渐变效果就是一个常用的视觉技巧。本文将深入探讨如何在iOS中实现UIView的渐变效果,并介绍一个已经封装好的解决方案,允许开发者轻松地在应用中...
`UIView AutoLayout`是这个机制的一个扩展,为`UIView`类添加了分类,提供了更加简洁易用的接口来设置自动布局约束。这个压缩包"UIView AutoLayout.zip"包含的项目名为"UIView-AutoLayout-master",很可能是GitHub上...
`UIView`是iOS应用开发中的核心组件,它在Objective-C(OC)中扮演着重要的角色。本文将深入探讨`UIView`的基本概念、重要属性、方法以及它在iOS界面构建中的作用。 首先,`UIView`是UIKit框架中的一个基础类,它是...
"uiview随手势旋转"这个主题,就是关于如何利用手势识别来实现UIView的旋转效果。 `KTOneFingerRotationGestureRecognizer`是一个自定义的手势识别类,它是对苹果内置的`UIGestureRecognizer`类的扩展。`...
在iOS开发中,Swift语言为开发者提供了丰富的工具来创建引人入胜的用户界面,其中自定义UIView动画是一项重要的技术。这篇博客文章“Swift自定义UIView动画”详细讲解了如何利用Swift来实现对UIView的动态效果,使得...
在iOS开发中,经常需要将UIView转换为UIImage,以便于保存、分享或者上传到服务器。这个"UIView转化为ImageDemo"项目就是一个很好的实例,演示了如何实现这个功能。在这个过程中,我们将深入探讨相关的知识点。 ...
【标题】:“UIView镂空”技术详解 在iOS开发中,`UIView`是构建用户界面的基础组件,我们经常需要对其进行各种定制以满足独特的设计需求。其中,“UIView镂空”是一种特殊的视图处理技巧,用于在视图上创建透明...
UIView-Positioning, 在UIView对象中,基于简单属性的框架属性设置 uiview定位收费 UIView Positioning 是一个快速扩展,它提供简单的shorthand 方法,以方便的方式定义任何UIView对象的框架属性( 宽度,高度,x,y ...
UIView+Extension 对view的一个扩展
在iOS开发中,UIView是构建用户界面的基本元素,它提供了丰富的功能来展示各种视图内容。本示例“iOS中UIView的翻页动画demo”旨在演示如何为UIView实现逼真的翻页效果,让用户体验如同翻阅实体书页一样的平滑过渡。...
在iOS开发中,`UIView`是界面布局中最基础的组件,用于展示各种用户界面元素。`UIView+RectCorner`是一个自定义的类别(Category),它为`UIView`添加了额外的功能,使我们能够轻松地为视图添加圆角,而无需深入到...
+ (UIView *_Nullable)az_gradientViewWithColors:(NSArray*> *_Nullable)colors locations:(NSArray*> *_Nullable)locations startPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint; - (void)az_...
在iOS开发中,`UIView`是界面布局和交互的基础组件,它构成了所有用户界面元素的基础。`UIView+Utils`是一个自定义的类别,为`UIView`添加了额外的功能,使得开发者能够更便捷地处理视图的相关尺寸计算和操作。这个...
本知识点将深入探讨如何利用轻量级组件使所有UIView支持进度条展示。 首先,标题提到的"swift-轻量级组件"通常是指一个小型、高效且易于集成的代码库或框架,它能够为现有的UIView类添加额外的功能,例如进度条显示...
在iOS开发中,`UIView` 是一个非常基础且重要的组件,它是所有视图类的基类,用于在屏幕上展示内容。本示例项目"绘制UIView"着重探讨如何自定义`UIView`,特别是如何通过代码来绘制一个具有特殊形状,如顶部为凹进...
`UIView+YRLayoutConstraint`是一个自定义的NSLayoutConstraint约束库,旨在简化iOS应用中的视图布局工作,尤其在处理复杂的动态布局时,能提供更加灵活和高效的解决方案。这个库通过扩展UIView类,添加了一些便捷的...