[控件] 创建出条形间隔效果的背景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-10-16 10:41:27

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

通过WinForm控件创建的WPF控件无法输入的问题

今天把写的一个WPF程序发布到别的机器上执行,发现一个比较奇怪的问题:在那个机器上用英文输入法无法输入数字,非要切换到中文输入法才行:但在我的机器上却是好好的. 最开始以为是输入法的问题,弄了好一阵子后,终于找到了原因:虽然这个程序是个WPF程序,但为了复用之前的部分代码,使用着一个WinForm的菜单控件,后续的子窗口都是通过这个WinForm菜单创建的.而用WinForm控件创建的WPF控件可能出现无法正确响应键盘事件的情况. 找到了原因后,一个常规的解决方法是:将WinForm控件换成WP

ToolStrip控件左右拖拽移动效果实现

1.主窗体下部添加一个Panel乘放ToolStrip控件以实现ToolStrip在窗体下部定位.2.当ToolStrip控件中子控件超出屏幕时,拖动控件可以实现滑动效果.拖动到控件边缘距窗体边缘1/3宽度时(可设),自动回弹.拖动控件边缘在屏幕内时释放鼠标,控件自动回弹,边缘吸附窗体边缘.3.当ToolStrip控件中子控件数目较少可以在屏幕上完全显示时,拖动效果不可见.4.增加 添加.删除 按钮,点击时可增删一个ToolStripButton,方便拖动效果可见(ToolStrip控件中子控件

通过C# WinForm控件创建的WPF WIndow窗口控件无法输入的问题

原文:通过WinForm控件创建的WPF 控件无法输入的问题 今天把写的一个WPF程序发布到别的机器上执行,发现一个比较奇怪的问题:在那个机器上用英文输入法无法输入数字,非要切换到中文输入法才行:但在我的机器上却是好好的. 最开始以为是输入法的问题,弄了好一阵子后,终于找到了原因:虽然这个程序是个WPF程序,但为了复用之前的部分代码,使用着一个WinForm的菜单控件,后续的子窗口都是通过这个WinForm菜单创建的.而用WinForm控件创建的WPF控件可能出现无法正确响应键盘事件的情况. 找

根据条件决定My97DatePicker日期控件弹出的日期格式

代码如下: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>根据条件决定My97DatePicker日期控件弹出的日期格式</title> 6 <link rel="stylesheet" type="text/css" href="css/bootstrap.min.

iOS之用xib给控件设置圆角、边框效果

xib中为各种控件设置圆角 通过代码的方式设置 @interface ViewController () @property (weak, nonatomic) IBOutlet UIView *myView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.myView.layer.masksToBounds = YES; self.myView.layer.cornerRa

自定义控件(视图)28期笔记05:自定义控件之使用系统控件(开关按钮点击效果)

1.  开关按钮点击效果,如下: 2. 继承已有View实现自定义View 3. 下面通过一个案例实现滑动开关的案例: (1)新建一个新的Android工程,命名为" 开关按钮",接下来我们按照上面的步骤来:自定义类MyToggleButton继承自View. (2)编写设计activity_main.xml布局文件,如下: 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andro

DEV中的TreeList控件应用的一个小效果实现【转载】

我使用最多的DEV控件就是这个TreeList啦,当然用好它很不简单,如果用好它,能做出很精彩的树形层次结构图.TreeList控件很强大,以至于你看DEV自带的DEMO,也得浪费你很长时间应用.DEV控件的DEMO只是告诉你有些什么功能,只是抛砖引玉,决不能照搬DEMO! 用好TreeList控件绝对会让你的软件锦上添花!精益求精促使我总想用TreeList实现出更好的效果,但对TreeList控件的每一步深入学习,都需要花费不要时间和精力.现在记录一下我学习使用该控件的一个小功能的过程. 就

自定义控件三部曲之绘图篇(十六)——给控件添加阴影效果与发光效果

前言:要么出击,要么出局,命运女神总会眷顾拼劲全力的一方 相关文章: <Android自定义控件三部曲文章索引>:http://blog.csdn.net/harvic880925/article/details/50995268 这节我们将学到如下内容: 传统地给按钮添加阴影的方法 如何给已有控件添加阴影 如何给图片添加阴影 一.layerlist给按钮添加阴影效果 给控件添加阴影有很多方法,但平常我们给按钮添加阴影最常用的就是使用layerlist多层绘图来添加阴影效果,我们先来看一下给按

九、点击控件弹出复制粘贴剪切选择等(UIMenuController)

默认情况下,有以下控件已经支持UIMenuController UITextField UITextView UIWedView 以UITable为例,说明点击后弹出复制剪切粘贴等为例 使用的整体思路:(系统自带的文字) 1.新建一个UILabel的类,如果想以后storyboard和Xib都可以用,就可以调用awakeFromNib和initWithFrame方法,同时进行初始化操作 2.使UILabel成为第一响应者作用: 提供两种方法canBecomeFirstResponder和canP