站长网_站长创业_站长主页_站长之家_易采站长站

会员投稿 投稿指南 站长资讯通告: 基于IOS实现带箭头的view
搜索:
您的位置: 主页 > 教程 > 软件开发 > IOS开发 > » 正文

基于IOS实现带箭头的view

来源: 易采站长站

我使用DrawRect进行的View的拉伸(是这样描述的吧??), 效果图也实现了类似于微信的View效果, 你可以看一看.

ios,绘制带箭头的view,自定义view

创建继承于UIView的视图 .h文件


// backGoundView
@property (nonatomic, strong) UIView * _Nonnull backGoundView;
// titles
@property (nonatomic, strong) NSArray * _Nonnull dataArray;
// images
@property (nonatomic, strong) NSArray * _Nonnull images;
// height
@property (nonatomic, assign) CGFloat row_height;
// font
@property (nonatomic, assign) CGFloat fontSize;
// textColor
@property (nonatomic, assign) UIColor * _Nonnull titleTextColor;
// delegate
@property (nonatomic, assign) id <selectIndexPathDelegate> _Nonnull delegate;
// 初始化方法
- (instancetype _Nonnull)initWithOrigin:(CGPoint) origin
Width:(CGFloat) width
Height:(CGFloat) height
Type:(XTDirectionType)type
Color:( UIColor * _Nonnull ) color;
- (void)popView;
- (void)dismiss;

##.m 实现部分

定义用到的宏


#define ScreenWidth [UIScreen mainScreen].bounds.size.width
#define ScreenHeight [UIScreen mainScreen].bounds.size.height
#define Length 5
#define Length2 15

@property (nonatomic, assign) CGPoint origin;     // 箭头位置
@property (nonatomic, assign) CGFloat height;     // 视图的高度
@property (nonatomic, assign) CGFloat width;      // 视图的宽度
@property (nonatomic, assign) XTDirectionType type;    // 箭头位置类型
@property (nonatomic, strong) UITableView *tableView;   // 填充的tableview

自定义初始化方法


- (instancetype)initWithOrigin:(CGPoint)origin Width:(CGFloat)width Height:(CGFloat)height Type:(XTDirectionType)type Color:(UIColor *)color
{

self = [super initWithFrame:CGRectMake(0, 0, ScreenWidth, ScreenHeight)];
if (self) {
self.backgroundColor = [UIColor clearColor];
self.origin = origin;
self.width = width;
self.height = height;
self.type = type;
self.backGoundView = [[UIView alloc] initWithFrame:CGRectMake(origin.x, origin.y, width, height)];
self.backGoundView.backgroundColor = color;
[self addSubview:self.backGoundView];
[self.backGoundView addSubview:self.tableView];
}
return self;
}

drawRect


#pragma mark - drawRect
- (void)drawRect:(CGRect)rect {
// Drawing code

CGContextRef context = UIGraphicsGetCurrentContext();

switch (self.type) {
case XTTypeOfUpLeft:
case XTTypeOfUpCenter:
case XTTypeOfUpRight:{
{
CGFloat startX = self.origin.x;
CGFloat startY = self.origin.y;
CGContextMoveToPoint(context, startX, startY);
CGContextAddLineToPoint(context, startX + Length, startY + Length);
CGContextAddLineToPoint(context, startX - Length, startY + Length);
}
break;
}
case XTTypeOfDownLeft:
case XTTypeOfDownCenter:
case XTTypeOfDownRight: {
{
CGFloat startX = self.origin.x;
CGFloat startY = self.origin.y;
CGContextMoveToPoint(context, startX, startY);
CGContextAddLineToPoint(context, startX - Length, startY - Length);
CGContextAddLineToPoint(context, startX + Length, startY - Length);
}
break;
}
case XTTypeOfLeftUp:
case XTTypeOfLeftCenter:
case XTTypeOfLeftDown: {
{
CGFloat startX = self.origin.x;
CGFloat startY = self.origin.y;
CGContextMoveToPoint(context, startX, startY);
CGContextAddLineToPoint(context, startX + Length, startY - Length);
CGContextAddLineToPoint(context, startX + Length, startY + Length);
}
break;
}
case XTTypeOfRightUp:
case XTTypeOfRightCenter:
case XTTypeOfRightDown: {
{
CGFloat startX = self.origin.x;
CGFloat startY = self.origin.y;
CGContextMoveToPoint(context, startX, startY);
CGContextAddLineToPoint(context, startX - Length, startY - Length);
CGContextAddLineToPoint(context, startX - Length, startY + Length);
}
break;
}
}
CGContextClosePath(context);
[self.backGoundView.backgroundColor setFill];
[self.backgroundColor setStroke];
CGContextDrawPath(context, kCGPathFillStroke);
}
            
Tags: iOS 自定义View
最新图文资讯
1 2 3 4 5 6
相关文章列表:
最新文章
易采站长站 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助 -