Swift 开发:自定义 GroupBox 案例
2017-04-27 21:39
561 查看
1 封装一个view
//// UIGroupBox.swift
// groupbox
//
// Created by 开发 on 17/4/27.
// Copyright © 2017年
黄涛. All rights reserved.
//
import UIKit
class UIGroupBox :UIView {
func drawInfo(width:CGFloat,txt:NSString){
drawText = txt;
drawStart =
30;
drawEnd = width +
30;
}
var drawText:NSString ="";
var drawStart:CGFloat =0;
var drawEnd:CGFloat =0;
override
func drawRect(rect:CGRect) {
self.backgroundColor =UIColor.grayColor();
let context =UIGraphicsGetCurrentContext()
//创建path
let path =CGPathCreateMutable()
let w:CGFloat =self.frame.width;
let h:CGFloat =self.frame.height;
let space:CGFloat =50;
let font2 =
UIFont.boldSystemFontOfSize(16)
let dic:[String:AnyObject]? = [NSForegroundColorAttributeName:UIColor.whiteColor(),NSFontAttributeName
:font2];
drawText.drawAtPoint(CGPoint(x:drawStart
+ space + 10 , y: space -
10),withAttributes:dic);
//1 x =
开始位置 +
间隔长度, y =
间隔长度
CGPathMoveToPoint(path,
nil,drawStart + space,space)
//2 x =
间隔长度, y =
间隔长度
CGPathAddLineToPoint(path,
nil, space, space)
//3 x =
间隔长度, y =
总高度 -
间隔长度
CGPathAddLineToPoint(path,
nil, space, h - space)
//4 x =
总宽度 -
间隔长度, y =
总高度 -
间隔长度
CGPathAddLineToPoint(path,
nil, w - space , h - space)
//5 x =
总宽度 -
间隔长度, y =
间隔长度
CGPathAddLineToPoint(path,
nil, w - space , space)
//6 x =
总宽度 -
间隔长度, y =
间隔长度
CGPathAddLineToPoint(path,
nil,space + drawEnd , space)
//添加到context中
CGContextAddPath(context, path)
CGContextSetRGBStrokeColor(context,1,
1,0,
1)
CGContextStrokePath(context)
}
}
2 调用方法
//// ViewController.swift
// groupbox
//
// Created by 开发 on 17/4/27.
// Copyright © 2017年
黄涛. All rights reserved.
//
import UIKit
class ViewController:
UIViewController {
@IBOutlet weak
var mainView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
mainView.layoutIfNeeded();
let box = UIGroupBox();
box.drawInfo(120, txt:
"标题测试应用")
box.frame =
CGRectMake(0,
0, mainView.frame.width,
mainView.frame.height);
mainView.addSubview(box);
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
3 效果图
相关文章推荐
- [网页游戏开发]容器的使用及自定义Tab,RadioGroup,List,ViewStack
- 50个Android开发技巧(03 自定义ViewGroup)
- 【Swift】IOS开发中自定义转场动画
- 自定义控件(视图)28期笔记09:自定义视图之继承自ViewGroup(仿ViewPager效果案例)
- 菜鸟学Android笔记(四十七):自定义标签开发案例及打包
- A Custom Group Combo Box 自定义组合下拉框
- swift开发笔记16 - 使用xib自定义一个控件(复合控件)
- 【swift,oc】ios开发中巧用自动布局设置自定义cell的高度
- Android-浅析自定义ViewGroup(附一个子控件根据父控件行宽自动换行的LineWrapLayout 案例)
- iOS9+Swift开发经验不定期汇总(2): 企业账号应用不受信任,自定义Navigation Controller左上角返回按钮,CLLocationManager停止获取GPS等
- Android开发实践:自定义ViewGroup的onLayout()分析
- 论坛源码推荐(10月9日):Swift开发知乎日报客户端,轻量级自定义相机
- 【移动开发】如何自定义ViewGroup
- 开发了一款有趣的自定义Asp.net服务器控件: GroupList[开放源代码]
- Android开发之自定义View专题(四):自定义ViewGroup
- Android开发教程:自定义ViewGroup方法总结
- swift 豆瓣音乐开发案例
- 【iOS开发-64】微博案例练习:用代码自定义cell,主要内容是针对不同高度的cell
- iOS开发——UI进阶篇(二)自定义等高cell,xib自定义等高的cell,Autolayout布局子控件,团购案例
- 安卓开发之CheckedBox和RadioGroup