创建表格视图
来源:互联网 发布:开源cms投资 编辑:程序博客网 时间:2024/06/06 08:58
创建表格方法,demo git地址
介绍: 本代码提供两种方式,让开发者更方便地创建一个表格视图,第一种方式是通过代理的方法实现整个视图的搭建,仿造UITableView模式进行编写,其功能强大;第二种方式是对第一种方式的一种封装,让开发者能更快速地实现视图的搭建,但对于过于个性的表格,建议采用第一种方式。
KWFormViewQuickBuilder.h
#import <Foundation/Foundation.h>#import "KWFormView.h"extern NSString *const noAction;extern NSString *const noColor;@interface KWFormViewQuickBuilder : NSObject- (KWFormView *)startCreatWithWidths:(NSArray *)widths startPoint:(CGPoint)point;- (void)setTextColor:(UIColor *)tcolor backgroundColor:(UIColor *)bcolor forRow:(NSInteger)row;- (void)setBorderColor:(UIColor *)color;- (void)setActionTarget:(id)target;- (void)addRecord:(NSArray *)record SELNames:(NSArray *)SELs;- (void)addRecord:(NSArray *)record;- (NSString *)valueAtcolumn:(NSInteger)column InRow:(NSInteger)row;@end
KWFromView
#import <UIKit/UIKit.h>@class KWFormView;typedef NS_ENUM(NSInteger, KWFormViewMode){ KWFormViewModeDefault, KWFormViewModeLeft, KWFormViewModeRight, KWFormViewModeMiddle,};@protocol KWFormViewDataSource <NSObject>- (NSInteger)numberOfRowsInFormView:(KWFormView *)formView;- (NSInteger)formViewColumnsInRow:(KWFormView *)formView;- (CGFloat)formView:(KWFormView *)formView widthForColumn:(NSInteger)column;- (NSString *)formView:(KWFormView *)formView textForColumn:(NSInteger)column inRow:(NSInteger)row;@optional- (CGFloat)formView:(KWFormView *)formView heightForRow:(NSInteger)row;- (UIColor *)formView:(KWFormView *)formView colorOfColumn:(NSInteger)column inRow:(NSInteger)row;- (UIColor *)formView:(KWFormView *)formView contentColorOfColumn:(NSInteger)column inRow:(NSInteger)row;- (UIColor *)formViewBorderColor:(KWFormView *)formView;- (UIView *)formViewViewForFooter:(KWFormView *)formView;- (UIFont *)formViewFontOfContent:(KWFormView *)formView;- (BOOL)formView:(KWFormView *)formView addActionForColumn:(NSInteger)column inRow:(NSInteger)row;@end@protocol KWFormViewDelegate <NSObject>@optional- (void)formView:(KWFormView *)formView didSelectColumn:(NSInteger)column inRow:(NSInteger)row;@end@interface KWFormView : UIView@property (nonatomic, weak) id<KWFormViewDataSource> dataSource;@property (nonatomic, weak) id<KWFormViewDelegate> delegate;@property (nonatomic, assign) BOOL thickBorder;@property (nonatomic, assign ,readonly) KWFormViewMode mode;- (void)setMode:(KWFormViewMode)mode withMargin:(CGFloat)margin;- (UIButton *)itemAtColumn:(NSInteger)column inRow:(NSInteger)row;@end@interface UIImage (KWFormView)- (BOOL)hasAlpha;- (UIImage *)imageWithAlpha;- (UIImage *)transparentBorderImage:(NSUInteger)borderSize;- (UIImage *)imageByApplyingAlpha:(CGFloat)alpha;+ (UIImage *)imageFromColor:(UIColor *)color;@end
其中UIImage(KWFromView)是对UIImage的拓展,用于个性化生成图片
@interface UIImage ()- (CGImageRef)newBorderMask:(NSUInteger)borderSize size:(CGSize)size;@end@implementation UIImage (Alpha)- (BOOL)hasAlpha{ CGImageAlphaInfo alpha = CGImageGetAlphaInfo(self.CGImage); return (alpha == kCGImageAlphaFirst || alpha == kCGImageAlphaLast || alpha == kCGImageAlphaPremultipliedFirst || alpha == kCGImageAlphaPremultipliedLast);}- (UIImage *)imageWithAlpha{ if ([self hasAlpha]) { return self; } CGImageRef imageRef = self.CGImage; size_t width = CGImageGetWidth(imageRef); size_t height = CGImageGetHeight(imageRef); // The bitsPerComponent and bitmapInfo values are hard-coded to prevent an "unsupported parameter combination" error CGContextRef offscreenContext = CGBitmapContextCreate(NULL, width, height, 8, 0, CGImageGetColorSpace(imageRef), kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedFirst); // Draw the image into the context and retrieve the new image, which will now have an alpha layer CGContextDrawImage(offscreenContext, CGRectMake(0, 0, width, height), imageRef); CGImageRef imageRefWithAlpha = CGBitmapContextCreateImage(offscreenContext); UIImage *imageWithAlpha = [UIImage imageWithCGImage:imageRefWithAlpha]; // Clean up CGContextRelease(offscreenContext); CGImageRelease(imageRefWithAlpha); return imageWithAlpha;}- (UIImage *)transparentBorderImage:(NSUInteger)borderSize{ // If the image does not have an alpha layer, add one UIImage *image = [self imageWithAlpha]; CGRect newRect = CGRectMake(0, 0, image.size.width + borderSize * 2, image.size.height + borderSize * 2); // Build a context that's the same dimensions as the new size CGContextRef bitmap = CGBitmapContextCreate(NULL, newRect.size.width, newRect.size.height, CGImageGetBitsPerComponent(self.CGImage), 0, CGImageGetColorSpace(self.CGImage), CGImageGetBitmapInfo(self.CGImage)); // Draw the image in the center of the context, leaving a gap around the edges CGRect imageLocation = CGRectMake(borderSize, borderSize, image.size.width, image.size.height); CGContextDrawImage(bitmap, imageLocation, self.CGImage); CGImageRef borderImageRef = CGBitmapContextCreateImage(bitmap); // Create a mask to make the border transparent, and combine it with the image CGImageRef maskImageRef = [self newBorderMask:borderSize size:newRect.size]; CGImageRef transparentBorderImageRef = CGImageCreateWithMask(borderImageRef, maskImageRef); UIImage *transparentBorderImage = [UIImage imageWithCGImage:transparentBorderImageRef]; // Clean up CGContextRelease(bitmap); CGImageRelease(borderImageRef); CGImageRelease(maskImageRef); CGImageRelease(transparentBorderImageRef); return transparentBorderImage;}#pragma mark - Private helper methods- (CGImageRef)newBorderMask:(NSUInteger)borderSize size:(CGSize)size{ CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); // Build a context that's the same dimensions as the new size CGContextRef maskContext = CGBitmapContextCreate(NULL, size.width, size.height, 8, // 8-bit grayscale 0, colorSpace, kCGBitmapByteOrderDefault | kCGImageAlphaNone); // Start with a mask that's entirely transparent CGContextSetFillColorWithColor(maskContext, [UIColor blackColor].CGColor); CGContextFillRect(maskContext, CGRectMake(0, 0, size.width, size.height)); // Make the inner part (within the border) opaque CGContextSetFillColorWithColor(maskContext, [UIColor whiteColor].CGColor); CGContextFillRect(maskContext, CGRectMake(borderSize, borderSize, size.width - borderSize * 2, size.height - borderSize * 2)); // Get an image of the context CGImageRef maskImageRef = CGBitmapContextCreateImage(maskContext); // Clean up CGContextRelease(maskContext); CGColorSpaceRelease(colorSpace); return maskImageRef;}- (UIImage *)imageByApplyingAlpha:(CGFloat) alpha{ UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0f); CGContextRef ctx = UIGraphicsGetCurrentContext(); CGRect area = CGRectMake(0, 0, self.size.width, self.size.height); CGContextScaleCTM(ctx, 1, -1); CGContextTranslateCTM(ctx, 0, -area.size.height); CGContextSetBlendMode(ctx, kCGBlendModeMultiply); CGContextSetAlpha(ctx, alpha); CGContextDrawImage(ctx, area, self.CGImage); UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage;}+ (UIImage *)imageFromColor:(UIColor *)color{ CGSize size = CGSizeMake(20, 20); UIGraphicsBeginImageContext(size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [color CGColor]); CGContextFillRect(context, (CGRect){CGPointZero,size}); UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return img;}@end
0 0
- 创建表格视图
- iOS - 创建表格类视图WBDataGridView
- 表格视图
- 表格视图
- 创建表格
- 创建表格
- UITableViewController表格视图控制器
- iOS表格视图 GMGridView
- iOS表格视图 GMGridView
- 08 TableView 表格视图
- IOS自定义表格视图
- UITableView/表格视图
- 表格视图UITableView
- 表格视图--- 基础
- Qt视图加载表格
- cocos2dx TabelView 表格视图
- UITableView-表格视图
- 表格视图控制器UITableViewController
- libevent源代码分析--libevent核心event
- 用curl判断url是否有效
- $.post以及解析xml-基于jQuery的Ajax聊天室程序
- JWPlayer快速入门指南(中文)
- php 微信扫码支付几个坑
- 创建表格视图
- UVA - 1339 Ancient Cipher :简单字符串处理
- label上的文字加上划线
- C++11中的std::function
- Scala入门学习笔记二-基本数据类型、程序控制结构
- 136. Single Number
- 图片无缝滚动兼容ie6
- 利用ajax与springmvc传送formdata实现图片的无刷新上传
- 传入颜色返回图片