Swift 畫線控制元件(支援xib和storyboard)
因專案中經常用到各種分割線,索性封裝了一個畫線的控制元件。
特性
- 支援在xib中使用
- 支援設定線的顏色
- 支援設定線的粗細
- padding屬性
- 支援橫線和豎線
- 支援畫虛線
- 可設定虛線間隔
- 可設定虛線線段的長度
效果預覽
程式碼如下
//
// CUILine.swift
// JYHealth
//
// Created by luoyang on 2017/11/30.
// Copyright © 2017年 JY. All rights reserved.
//
import UIKit
@IBDesignable
class CUILine: UIView {
// line
@IBInspectable var lineWidth: CGFloat = 1
@IBInspectable var lineColor: UIColor = UIColor.black
// padding
@IBInspectable var paddingLeft: CGFloat = 0
@IBInspectable var paddingRight: CGFloat = 0
@IBInspectable var paddingTop: CGFloat = 0
@IBInspectable var paddingBottom: CGFloat = 0
// direct
@IBInspectable var isHorizontal: Bool = true
// dash
@IBInspectable var isDash: Bool = false
@IBInspectable var dashPointWidth: CGFloat = 3.0
@IBInspectable var dashSpace: CGFloat = 1.0
override func draw(_ rect: CGRect) {
super.draw(rect)
// Drawing code
// 獲取上下文物件
let context = UIGraphicsGetCurrentContext()
var bx: CGFloat = 0, by: CGFloat = 0, ex: CGFloat = 0, ey: CGFloat = 0;
if isHorizontal {
bx = paddingLeft
by = CGFloat(Int(rect.size.height)/2)
ex = rect.size.width - paddingRight
ey = by
} else {
bx = CGFloat(Int(rect.size.width)/2)
by = paddingTop
ex = bx
ey = rect.size.height - paddingBottom
}
// 畫中間虛線
let path = CGMutablePath()
let begin = CGPoint(x: bx, y: by),
end = CGPoint(x: ex, y: ey)
path.move(to: begin)
path.addLine(to: end)
// 2、 新增路徑到圖形上下文
context!.addPath(path)
// 3、 設定狀態
context!.setLineWidth(lineWidth / UIScreen.main.scale)
context!.setStrokeColor(lineColor.cgColor)
if isDash {
context!.setLineDash(phase: 0, lengths: [dashPointWidth, dashSpace])
}
// 4、 繪製圖像到指定圖形上下文
context!.drawPath(using: .fillStroke)
}
}
xib中用法
step1: 拖一個UIView到介面上
step2: 如下圖設定該UIView的class為CUILine
step3: Attributes inspector可設定線的各種屬性引數,如下圖
相關推薦
Swift 畫線控制元件(支援xib和storyboard)
因專案中經常用到各種分割線,索性封裝了一個畫線的控制元件。 特性 支援在xib中使用 支援設定線的顏色 支援設定線的粗細 padding屬性 支援橫線和豎線 支援畫虛線 可設定虛線間隔 可
Android 廣告(banner)圖片輪播、圖片瀏覽、仿微信大圖檢視控制元件(支援視訊和gif圖片)、支援動態新增資料
之前專案需要做個仿微信檢視大圖,需要新增圓形下載進度,支援視訊和圖片切換等一系列功能控制元件,自己抽空把開發的自定義控制元件的成果重新構造、整理處理封裝成庫(aar),提供出來,有需要朋友,歡迎使用,如果有什麼建議歡迎留言或者GitHub上提issues
C# WPF 歌詞控制元件(支援逐字定位描色效果)
原文: C# WPF 歌詞控制元件(支援逐字定位描色效果) 之前做了一個模仿網易雲歌詞的控制元件,實現了載入網易雲歌詞並能隨音樂播放進度定位歌詞。今天呢將在這個控制元件的基礎上增加逐字定位描色功能,如下圖效果(QQ音樂PC)所示: 我所使用的實現方法很簡單粗暴,把每句歌詞每個字切開,單
Swift-iOS常用控制元件(UIActivityIndicatorView 活動指示器)
//UIActivityIndicatorView 活動指示器 func createActivityIndicatorView() { //建立活動指示器 let aiv = UIActi
基於jquery的可查詢多級select控制元件(可記錄歷史選擇)
;(function($,window,document){ var pluginName = 'multiSelect', defaults = { type: '1',//select層級onetwo data:[], field:[],//資料欄位名
PYQT5 動態刪除增加控制元件(不適用佈局情況)
工具/版本 (1)安裝環境:Windows7 64bit (2)使用版本Python3.6 (3)PYQT5 (4)eric6 刪除控制元件: self.buttom.deleteLater() 關閉控制元件: self.button.close()或者s
Android開發:如何在選單中呼叫控制元件(如Button、TextView……)
當我們在類內定義控制元件的全域性變數時,如Button……,只能在onCreate()中初始化,這樣的控制元件變數引用在選單中不好引用,會報錯。 如果想在選單中呼叫控制元件,可以在選單中重新定義控制元件
Winform遍歷視窗的所有控制元件(幾種方式實現)
C#遍歷窗體所有控制元件或某型別所有控制元件 //遍歷窗體所有控制元件, foreach (Control control in this.Controls) { //遍歷後的操作... control.Enabled = false; } 遍歷某個panel的所有控制元件
自定義時間選擇控制元件(仿ios滾動效果)
1.先上自定義的控制元件: /** * 滾輪選擇器 * author LH * data 2016/8/20 17:26 */ public class WheelView extends View { public static final String
MyWdatePicker97的使用,頁面中新增時間控制元件(JS的學習筆錄)
場景:最近在做一個日期年份的限制,比如文字框輸入2018年,彈出的my97控制元件限制在2018年,想到用最大值最小值限制,這裡參照的是my97說明文件,把該問題記錄下來以便於以後參考。首先js:function minValue(){ var year=$("#year"
Android仿iOS左右滑動開關控制元件(Android4.0以上適用)
上週使用Android的switch模仿iOS的左右滑動開關控制元件,程式碼如下: aty_switch.xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android
WPF DataGrid 控制元件(自定義樣式篇)
在《WPF 4 DataGrid 控制元件(基本功能篇)》中我們已經學習了DataGrid 的基本功能及使用方法。本篇將繼續介紹自定義DataGrid 樣式的相關內容,其中將涉及到ColumnHeader、RowHeader、Row、Cell 的各種樣式設定。 ColumnHeaderStyle
Android自定義控制元件---組合控制元件(包括自定義屬性)
今天和大家分享下組合控制元件的使用。很多時候android自定義控制元件並不能滿足需求,如何做呢?很多方法,可以自己繪製一個,可以通過繼承基礎控制元件來重寫某些環節,當然也可以將控制元件組合成一個新控制元件,這也是最方便的一個方法。今天就來介紹下如何使用組合控制元件,
JAVA SWING 日期選擇控制元件(目前支援JLable和JTextField)
package com.monitor.date; import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; i
Android組合控制元件(無限輪播圖)
android 自定義控制元件 是的,真的是自定義控制元件。 相對於自定義控制元件的控制元件是什麼呢?當然是原生的控制元件啦! 比如說: 1、Button 、TextView 、ImageView 、EditText等(view)。 2、LinearLayout
Android-基本控制元件(Spanner 下拉列表)
1.回顧 上篇 學會了 GridView 的使用,基本的SimapleAdapter 實現 2.這篇 (1)使用 SimapleAdapter 實現 圖文下拉列表 (2) 使用A
C++遍歷資料夾下所有的wav檔案(支援windows和Linux)
直接上程式碼: #include <iostream> #include <string> #include <vector> #include <fstream> #include <string.h> #includ
C++獲得毫秒級的時間差(支援Windows 和 Linux)
fatal error: windows.h: No such file or directory 我這裡Windows 裡面引用了 #include <windows.h> ,使用下面的方法測量函式執行時間 #include <iostream> #includ
Java前端Rsa公鑰加密,後端Rsa私鑰解密(支援字元和中文)
Java前端Rsa公鑰加密,後端Rsa私鑰解密(支援字元和中文) package com.utils; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import j
一個方便快捷gif線上水印製作(支援文字和圖片)
有時候我們要給gif加上水印的確不太方便,需要獲取每一幀下來然後進行處理。 這個時候自己弄得話花費時間也長。 使用起來也很簡單,製作文字水印時候只需要上傳gif檔案就行,等待伺服器處理完成自動下載預覽。 製作圖片水印時候需要先傳圖片檔案(png,jpg),上傳成功後