UIView自动调整控件(一个很方便使用的工具类吧)

镔哥自己仿照其他类重写的工具类,我们在工程中,或多或少的要修改控件的坐标-宽度-高度,于是,经常性的见到大家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

.m文件

#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* childin
self.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

时间: 2024-10-08 04:11:36

UIView自动调整控件(一个很方便使用的工具类吧)的相关文章

UIViewAdditions(一个很方便使用的工具类吧)

我们在工程中,或多或少的要修改控件的坐标-宽度-高度,于是,经常性的见到大家self.view.frame.origin.x,self.view.frame.size.width.........相当的麻烦,在这里向大家推荐一个比较好的工具类,是UIView的类目,它里面对于求坐标,求高度什么的做了封装,很方便大家调用. @下载链接:点击这里 @.h #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interfa

高级列表控件ListCtrl关联的MFC中的类:CListCtrl

高级列表控件ListCtrl关联的MFC中的类:CListCtrl■ 报表样式ListCtrl常用操作:1.添加列标题头:InsertColumn2.获取与设置列宽:GetColumnWidth.SetColumnWidth3.添加一行:InsertItem.SetItemText4.获取与设置单元文本:GetItemText.SetItemText5.允许多行选中时,获取选中的行数:GetSelectedCount6.单行选中时,获取选中的行:GetSelectionMark7.选中某行:Se

weixin4j开发—为大家提供一个获取Weixin对象的工具类

如果大家下载了weixin4j的话,那么这个工具类对大家使用weixin4j将是一个非常好用的工具类. 首先我创建了一个数据表,来存放access_token CREATE TABLE `t_token` ( `id` int(11) NOT NULL AUTO_INCREMENT, `access_token` varchar(120) NOT NULL, `expires_in` int(11) NOT NULL, `createTime` datetime NOT NULL, PRIMAR

读书笔记-UIView与控件

1.UIView 在Objective-C中,NSObject是所有类的“根”类.同样,在UIKit框架中,也存在一个如此神奇的类UIView.从继承关系上看,UIView是所有视图的根. 1.1.UIView家族 UIView大体分为“控件”和“视图”两类,二者均继承于UIView. UIControl类是控件类,之所以这样称呼,是因为它们都有能力响应一些高级事件.UIControl类以外的视图没有这些高级事件. 1.2.应用界面的构建层次 下图(左)是一个应用界面的构建层次图,该应用有一个U

想给UIVIew上控件添加一些动画效果

如果你还不知道怎样让一张图片缓缓滑动,渐渐消失,或者是在原地翻滚,不知道怎样让一个窗口弹出的时候有一点抖动的效果不那么僵硬,那正好,今儿在下总结的内容可能刚好能帮你实现你想要的效果(⊙o⊙)哦. 首先说一下什么是动画效果,动画效果有哪些好处吧: 这里所说的动画绝对不是你在电视上看到的,有剧情的那种(当然这句可能是废话),而是为了增加用户的体验感,通过对控件的属性或者layer进行一些处理达到美化界面的效果,主要是让界面看起来更加的生动,不会太枯燥.想象一下,你在用读书软件时候的翻页效果,就能被称

美观的单张上传控件 一个页面可以实例化多个

首先需要引用 js 和css 1 <!--上传控件--> 2 <script src="query.form.min.js"></script> 3 <link href="Img_List.css" rel="stylesheet" /> 4 <script src="Img_List.js"></script> Img_List.js 如下: 1 //

UIView与控件

1 视图的分类 控件.继承自UIControl类,能够响应用户高级事件. 窗口.它是UIWindow对象.一个iOS应用只有一个UIWindow对象,它是所有子视图的“根”容器. 容器视图.它包括UIScrollView.UIToolBar以及它们的子类.UIScrollView的子类有UITextView.UITableView和UICollectionView,在内容超出屏幕时,它们可以提供水平或垂直滚动条.UIToolbar是非常特殊的容器,他能够包含其他控件,一般置于屏幕底部,特殊情况也

列表控件ListBox关联的MFC中的类:CListBox

######################################################## 1.在列表的结尾添加一项:AddString 2.在列表的指定位置添加一项:InsertString 3.获取列表中项的个数:GetCount 4.获取某项的文本:GetText 5.在单选列表控件中,获取与设置当前选中项:GetCurSel.SetCurSel 6.在列表项中查找指定的字符串:FindString.FindStringExact 7.删除列表中所有的项:ResetC

【UIView与控件】