UIView自动调整控件(一个很方便使用的工具类吧)
来源:互联网 发布:linux分辨率只有两个 编辑:程序博客网 时间:2024/06/05 14:22
镔哥自己仿照其他类重写的工具类,我们在工程中,或多或少的要修改控件的坐标-宽度-高度,于是,经常性的见到大家self.view.frame.origin.x, self.view.frame.size.width.........相当的麻烦, 在这里向大家写一下的工具类,是UIView的类目,它里面对于求坐标,求高度什么的做了封装,很方便大家调用.
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface UIView (bgCategory)
@property(nonatomic)CGFloat left;
@property(nonatomic)CGFloat top;
@property(nonatomic)CGFloat right;
@property(nonatomic)CGFloat bottom;
@property(nonatomic)CGFloat width;
@property(nonatomic)CGFloat height;
@property(nonatomic)CGFloat centerX;
@property(nonatomic)CGFloat centerY;
@property(nonatomic,readonly)CGFloat screenX;
@property(nonatomic,readonly)CGFloat screenY;
@property(nonatomic,readonly)CGFloat screenViewX;
@property(nonatomic,readonly)CGFloat screenViewY;
@property(nonatomic,readonly)CGRect screenFrame;
@property(nonatomic)CGPoint origin;
@property(nonatomic)CGSize size;
@property(nonatomic)BOOL visible;
/**
* Finds the first descendant view (including this view) that is a member of a particular class.
*/
- (UIView*)descendantOrSelfWithClass:(Class)cls;
/**
* Finds the first ancestor view (including this view) that is a member of a particular class.
*/
- (UIView*)ancestorOrSelfWithClass:(Class)cls;
/**
* Removes all subviews.删除所有子窗口
*/
- (void)removeAllSubviews;
/**
* Calculates the offset of this view from another view in screen coordinates.
*/
- (CGPoint)offsetFromView:(UIView*)otherView;
/**
* The view controller whose view contains this view.
*/
- (UIViewController*)viewController;
- (void)addSubviews:(NSArray *)views;
+ (UILabel *)labelWithFrame:(CGRect)frame fontSize:(CGFloat)fontSize textAlignment:(NSTextAlignment)alignment text:(NSString *)text;
@end
#import "UIViewbggong.h"
@implementation UIView (TTCategory)
/******************************view是否可见*******************************/
- (BOOL)visible{
return !self.hidden;
}
- (void)setVisible:(BOOL)visible{
self.hidden = !visible;
}
/******************************设置View左边x坐标*******************************/
- (CGFloat)left {
returnself.frame.origin.x;
}
- (void)setLeft:(CGFloat)x {
CGRect frame = self.frame;
frame.origin.x = x;
self.frame = frame;
}
/****************************设置View顶部y坐标*********************************/
- (CGFloat)top {
returnself.frame.origin.y;
}
- (void)setTop:(CGFloat)y {
CGRect frame = self.frame;
frame.origin.y = y;
self.frame = frame;
}
/****************************设置View右边x坐标*********************************/
- (CGFloat)right {
returnself.frame.origin.x +self.frame.size.width;
}
- (void)setRight:(CGFloat)right {
CGRect frame = self.frame;
frame.origin.x = right - frame.size.width;
self.frame = frame;
}
/****************************设置View底部y坐标*************************************/
- (CGFloat)bottom {
returnself.frame.origin.y +self.frame.size.height;
}
- (void)setBottom:(CGFloat)bottom {
CGRect frame = self.frame;
frame.origin.y = bottom - frame.size.height;
self.frame = frame;
}
/*****************************设置View的中心坐标********************************/
- (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);
}
/**************************设置View的宽度***********************************/
- (CGFloat)width {
returnself.frame.size.width;
}
- (void)setWidth:(CGFloat)width {
CGRect frame = self.frame;
frame.size.width = width;
self.frame = frame;
}
/*****************************设置View的高度********************************/
- (CGFloat)height {
returnself.frame.size.height;
}
- (void)setHeight:(CGFloat)height {
CGRect frame = self.frame;
frame.size.height = height;
self.frame = frame;
}
- (CGFloat)screenX {
CGFloat x = 0;
for (UIView* view =self; view; view = view.superview) {
x += view.left;
}
return x;
}
- (CGFloat)screenY {
CGFloat y = 0;
for (UIView* view =self; view; view = view.superview) {
y += view.top;
}
return y;
}
- (CGFloat)screenViewX {
CGFloat x = 0;
for (UIView* view =self; view; view = view.superview) {
x += view.left;
if ([view isKindOfClass:[UIScrollViewclass]]) {
UIScrollView* scrollView = (UIScrollView*)view;
x -= scrollView.contentOffset.x;
}
}
return x;
}
- (CGFloat)screenViewY {
CGFloat y = 0;
for (UIView* view =self; view; view = view.superview) {
y += view.top;
if ([view isKindOfClass:[UIScrollViewclass]]) {
UIScrollView* scrollView = (UIScrollView*)view;
y -= scrollView.contentOffset.y;
}
}
return y;
}
- (CGRect)screenFrame {
returnCGRectMake(self.screenViewX,self.screenViewY,self.width,self.height);
}
- (CGPoint)origin {
returnself.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;
}
- (CGPoint)offsetFromView:(UIView*)otherView {
CGFloat x = 0, y =0;
for (UIView* view =self; view && view != otherView; view = view.superview) {
x += view.left;
y += view.top;
}
returnCGPointMake(x, y);
}
/*
- (CGFloat)orientationWidth {
return UIInterfaceOrientationIsLandscape(TTInterfaceOrientation())
? self.height : self.width;
}
- (CGFloat)orientationHeight {
return UIInterfaceOrientationIsLandscape(TTInterfaceOrientation())
? self.width : self.height;
}
*/
- (UIView*)descendantOrSelfWithClass:(Class)cls {
if ([selfisKindOfClass:cls])
return self;
for (UIView* childinself.subviews) {
UIView* it = [childdescendantOrSelfWithClass:cls];
if (it)
return it;
}
return nil;
}
- (UIView*)ancestorOrSelfWithClass:(Class)cls {
if ([selfisKindOfClass:cls]) {
return self;
} else if (self.superview) {
return [self.superviewancestorOrSelfWithClass:cls];
} else {
return nil;
}
}
- (void)removeAllSubviews {
while (self.subviews.count) {
UIView* child =self.subviews.lastObject;
[child removeFromSuperview];
}
}
- (UIViewController*)viewController {
for (UIView* next = [selfsuperview]; next; next = next.superview) {
UIResponder* nextResponder = [next nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]]) {
return (UIViewController*)nextResponder;
}
}
return nil;
}
- (void)addSubviews:(NSArray *)views
{
for (UIView* vin views) {
[selfaddSubview:v];
}
}
+ (UILabel *)labelWithFrame:(CGRect)frame
fontSize:(CGFloat)fontSize
textAlignment:(NSTextAlignment)alignment
text:(NSString *)text
{
UILabel *label = [[UILabelalloc]initWithFrame:frame];
label.backgroundColor = [UIColorclearColor];
label.font = [UIFontsystemFontOfSize:fontSize];
label.textAlignment = alignment;
label.text = text;
label.textColor = [UIColorblackColor];
label.lineBreakMode =NSLineBreakByWordWrapping;
return [label autorelease];
}
@end
@interface NSString (ParseCategory)
- (NSMutableDictionary *)explodeToDictionaryInnerGlue:(NSString *)innerGlue
outterGlue:(NSString *)outterGlue;
@end
@implementation NSString (ParseCategory)
- (NSMutableDictionary *)explodeToDictionaryInnerGlue:(NSString *)innerGlue
outterGlue:(NSString *)outterGlue
{
NSArray *firstExplode = [selfcomponentsSeparatedByString:outterGlue];
NSArray *secondExplode;
NSInteger count = [firstExplode count];
NSMutableDictionary* returnDictionary = [NSMutableDictionarydictionaryWithCapacity:count];
for (NSInteger i =0; i < count; i++)
{
secondExplode =
[(NSString*)[firstExplodeobjectAtIndex:i]componentsSeparatedByString:innerGlue];
if ([secondExplode count] == 2)
{
[returnDictionary setObject:[secondExplodeobjectAtIndex:1]
forKey:[secondExplodeobjectAtIndex:0]];
}
}
return returnDictionary;
}
@end
- UIView自动调整控件(一个很方便使用的工具类吧)
- UIView Additions(一个很方便使用的工具类)
- UIViewAdditions(一个很方便使用的工具类吧)
- UIView的自动调整
- UIView扩展--方便控件的布局
- CALayer控件(通过操作这个CALayer对象,可以很方便地调整UIView的一些界面属性,比如:阴影、圆角大小、边框宽度和颜色等)
- TextUtils一个方便的工具类
- uiview 自动调整位置
- 一个方便的SharedPreferencesUtils工具
- 改进过的一个联动控件,使用更加简单方便
- 改进过的一个联动控件,使用更加简单方便
- 一个方便使用的在线截图Web控件-WebImageMaker
- 使用 OpenCV 做一个简单方便的抠图工具
- 简单的封装了一个OKHttp网络请求工具类,直接粘贴进去调用使用,很方便
- java流工具类使用很方便
- 一个更方便使用的upload类
- MFC使用EasySize类自动调整对话框上控件的布局
- IOS UIView自动调整尺寸
- 大话设计模式C++实现-第3.4.5.11.22.23章-设计原则
- Sql Server 删除所有用户表
- 类的嵌套
- 解决html静态页面在tomcat下中文乱码的问题。
- POSTGRESQL 数据库 数据库管理
- UIView自动调整控件(一个很方便使用的工具类吧)
- Linux下Android ADB驱动安装详解
- bluestacks install apk
- oracle 根据表名查询字段的详细信息 字段类型 注释
- 标志寄存器
- 字符串的小程序练手
- 为什么选择with 而不是 finally(转)
- redis基本操作命令
- 在ubuntu 下搭建 android开发环境