1. 程式人生 > >Swift 畫線控制元件(支援xib和storyboard)

Swift 畫線控制元件(支援xib和storyboard)

因專案中經常用到各種分割線,索性封裝了一個畫線的控制元件。

特性

  • 支援在xib中使用
  • 支援設定線的顏色
  • 支援設定線的粗細
  • padding屬性
  • 支援橫線和豎線
  • 支援畫虛線
  • 可設定虛線間隔
  • 可設定虛線線段的長度

效果預覽

image.png

程式碼如下

//
//  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
image.png
step3: Attributes inspector可設定線的各種屬性引數,如下圖
image.png

相關推薦

Swift 控制元件支援xibstoryboard

因專案中經常用到各種分割線,索性封裝了一個畫線的控制元件。 特性 支援在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 日期選擇控制元件(目前支援JLableJTextField)

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檔案支援windowsLinux

直接上程式碼: #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),上傳成功後