[控件] 创建出条形间隔效果的背景LineBackgroundView

创建出条形间隔效果的背景LineBackgroundView

效果:

使用:

//
//  ViewController.m
//  LineBackgroundView
//
//  Created by XianMingYou on 15/3/4.
//  Copyright (c) 2015年 XianMingYou. All rights reserved.
//

#import "ViewController.h"
#import "LineBackgroundView.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    UIColor *color             = [[UIColor blackColor] colorWithAlphaComponent:0.05f];
    LineBackgroundView *bgView = [LineBackgroundView createViewWithFrame:self.view.bounds
                                                               LineWidth:4
                                                                 lineGap:4
                                                               lineColor:color];
    [self.view addSubview:bgView];
}

@end

源码:

//
//  LineBackgroundView.h
//  LineBackgroundView
//
//  Created by XianMingYou on 15/3/4.
//  Copyright (c) 2015年 XianMingYou. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface LineBackgroundView : UIView

@property (nonatomic) CGFloat            lineWidth;
@property (nonatomic) CGFloat            lineGap;
@property (nonatomic, strong) UIColor   *lineColor;

- (void)buildView;
+ (instancetype)createViewWithFrame:(CGRect)frame
                          LineWidth:(CGFloat)width
                            lineGap:(CGFloat)lineGap
                          lineColor:(UIColor *)color;

@end
//
//  LineBackgroundView.m
//  LineBackgroundView
//
//  Created by XianMingYou on 15/3/4.
//  Copyright (c) 2015年 XianMingYou. All rights reserved.
//

#import "LineBackgroundView.h"

// 将度数转换为弧度
#define   RADIAN(degrees)  ((M_PI * (degrees))/ 180.f)

@interface LineBackgroundView ()

@property (nonatomic, strong) UIView *containerView;

@end

@implementation LineBackgroundView

- (instancetype)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        self.layer.masksToBounds = YES;
    }
    return self;
}

- (void)buildView {

    if (self.lineGap <= 0 && self.lineWidth <= 0) {
        return;
    }

    // 获取长度
    CGFloat width  = self.bounds.size.width;
    CGFloat height = self.bounds.size.height;
    CGFloat containerViewWidth = (width + height) * 0.75;

    // 初始化containView
    self.containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0,
                                                                  containerViewWidth,
                                                                  containerViewWidth)];
    self.containerView.layer.borderWidth = 1.f;
    self.containerView.center            = CGPointMake(self.bounds.size.width / 2.f,
                                                       self.bounds.size.height / 2.f);

    NSInteger lineViewCount = containerViewWidth / (self.lineGap + self.lineWidth);
    for (int count = 0; count < lineViewCount + 1; count++) {
        UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(count * (self.lineGap + self.lineWidth),
                                                                    0,
                                                                    self.lineWidth,
                                                                    containerViewWidth)];
        if (self.lineColor) {
            tempView.backgroundColor = self.lineColor;
        } else {
            tempView.backgroundColor = [UIColor blackColor];
        }

        [self.containerView addSubview:tempView];
    }

    self.containerView.transform = CGAffineTransformRotate(self.containerView.transform, RADIAN(45));
    [self addSubview:self.containerView];
}

+ (instancetype)createViewWithFrame:(CGRect)frame
                          LineWidth:(CGFloat)width
                            lineGap:(CGFloat)lineGap
                          lineColor:(UIColor *)color {
    LineBackgroundView *bgView = [[LineBackgroundView alloc] initWithFrame:frame];
    bgView.lineWidth           = width;
    bgView.lineGap             = lineGap;
    bgView.lineColor           = color;
    [bgView buildView];

    return bgView;
}

@end

时间: 2024-09-22 02:28:45

[控件] 创建出条形间隔效果的背景LineBackgroundView的相关文章

使用约束控件创建界面

本文讲的是使用约束控件创建界面, 如果你是刚刚接触约束控件--支持库中与 Android Studio 2.2 可视化 UI 编辑器紧密结合的新布局--我建议首先观看上面的介绍视频或者浏览我们的代码库. 视频和代码库简明扼要地介绍了布局编辑器中的一些处理方式.约束和 UI 控制的基本概念,了解这些有助于你快速在可见的方式下搭建界面. 本文中,我将着重讲解最近在 Android Studio 2.3 (Beta) 中约束控件的新增内容:链条和比率,同时也会写一些普通约束控件中的一些建议和技巧. 链

用C#和microsoft webbrowser控件创建自己的ie

web|webbrowser控件|创建 运行本例程需要 VS.net 2003 装有ie browser    如何简单的创建自己的ie浏览器?Mircosoft提供了一个COM组件供我们使用,此组件是一个AtiveX控件,实际上很多多窗口浏览器比如myie.te都是用了此控件.下面说说如何在C#里面使用它. 创建一个窗口运用程序 右击工具箱某一选项卡>添加/移除项...>COM组件>选中"Microsoft Web Browser"控件.       3.按确定后控

状态条控件上加入trackbar控件,类似word2007的效果

问题描述 状态条控件上加入trackbar控件,类似word2007的效果 状态条控件上加入trackbar控件,类似word2007的效果.怎么在statusbar上增加一个trackbar,放在窗体的右下角? 解决方案 https://msdn.microsoft.com/zh-cn/library/9z8yazex(VS.80).aspx 解决方案二: http://blog.csdn.net/luols/article/details/22782929

.net-如何把image控件绑定数据库?实现效果 是一张图片一行描述,求助,求解答~

问题描述 如何把image控件绑定数据库?实现效果 是一张图片一行描述,求助,求解答~ 大概就是一张图片image一行描述lable?,能直接绑定么 解决方案 datalist+image即可实现.http://blog.csdn.net/haitaodoit/article/details/8478877 图片有两种:1.图片在数据库,二进制2.图片路径在数据库,Image控件ImageUrl属性绑定<%Eval(""url"")%>

Android怎么在一个View控件上画动态扫描效果?

问题描述 Android怎么在一个View控件上画动态扫描效果? 怎么在一个View上画动态扫描效果?例如在一张图片上画一个左右扫描这张图片的效果? 解决方案 背景图片和前景图片运用相结合,前景图片运用旋转动画

jquery mobile popup-jquery.mobile-1.4.3 popup控件弹出位置如何控制?用过的请进

问题描述 jquery.mobile-1.4.3 popup控件弹出位置如何控制?用过的请进 想用jq mobile的popup组件进行错误消息的弹出提示,可是位置不能控制,我是模拟一个点击事件触发popup弹出,但是控制不了弹出的位置,有遇到的这个问题的说下,谢谢!

c#-winform程序listview控件修改数据后动态刷新效果

问题描述 winform程序listview控件修改数据后动态刷新效果 在另一个窗口中修改好listview控件数据,并能在listview立刻显示出来. 怎么实现求大神指点!谢谢 解决方案 参考:http://bbs.csdn.net/topics/360140208 解决方案二: 你所谓的立刻是什么意思? 解决方案三: 在Form2窗体中声明 public Form1 f1; Form1按钮单击事件中: Form2 f2 = new Form2(); f2.f1 = this; f2.Sho

窗口编程-swing控件创建的时候没有赋值,后面如何使用他

问题描述 swing控件创建的时候没有赋值,后面如何使用他 通过jpanel,text能获得吗?或者其他什么方法,新手求帮助 ,新手求帮助 解决方案 可以将其声明为成员变量或者全局变量,这样就可以在你用到它的时候直接new了,就可以被使用了.你还可以在构造函数中初始化,以防出错.希望能帮到你 解决方案二: 定义成全局变量,后面通过全局访问

ASP.NET jQuery 实例9 通过控件hyperlink实现返回顶部效果_jquery

要实现该效果,首先要先了解以下几点基础知识: 窗体滚动事件:$(window).scroll(function(){...}); 获取窗体滚动距离:$(window).scrollTop(); 获取窗体高度:$(window).height(); 了解以上内容就可以实现通过hyperlink控件实现返回顶部的效果了. 1.准备界面结构代码: 复制代码 代码如下: <form id="form1" runat="server"> <div> &