iOS中UIView實現不同方向的導角

2022-09-21 14:18:12 字數 1492 閱讀 6805

前言

開發中總因為一些比較蛋疼的導角問題而困擾著我們,尤其是我們要給乙個uiview導角成 左上 、左下。。。

這種需求很值得用**實現一下, 今天突然在appcode找到了一篇好文章.於是有了下文

通常導角

self.view.cornerradius = 20.0

self.view.cliptobounds = true

這兩行**是全方向導角

如果像要搞成不同方向的話可以用ios11 新的api和 ios11以前的cashapelayer畫貝賽爾曲線來解決

首先我們要建立乙個uiview

class viewcontroller: uiviewcontroller

}ios11 以後蘋果提供了乙個uiview的屬性叫maskedcorners用於calayer的動畫相關.

public struct cacornermask : optionset

public static var layermaxxminycorner: cacornermask

public static var layerminxmaxycorner: cacornermask

public static var layermaxxmaxycorner: cacornermask

}下面我說一下

一般我們都為uiview寫個 extension

extension uiview else }}

這裡區分了ios11之前和之後的兩種搞法.

之前的話我們都是用乙個貝塞爾曲線畫path.然後建立cashapelayer 給self.layer.mask做一種透明的遮罩來解決不同方向導角問題.

新增動畫效果的導角

我們在原viewdidload()方法裡面加個手勢.

並寫好觸發的事件, 完整的**如下

import uikit

class viewcontroller: uiviewcontroller

@objc func animatecornerchange(recognizer: uitapgesturerecognizer) .startanimation()

} else , completion: nil)

} }}extension uiview else

}}這裡主要強調一下動畫的新api

ios10之後u增加乙個新的動畫效果api

uiviewpropertyanimator(duration: 0.4, curve: .easeinout) .startanimation()

ios之前可以通過古老的api來實現

uiview.animate(withduration: 1.0, delay: 0.0, options: .curveeaseinout, animations: , completion: nil)

最終的效果

總結本文demo

本文標題: ios中uiview實現不同方向的導角

本文位址:

Objective C中不同方式實現鎖 二

在上一文中,我們已經討論過用objective c鎖幾種實現 跳轉位址 也用 實際的演示了如何通過構建乙個互斥鎖來實現多執行緒的資源共享及執行緒安全,今天我們繼續討論鎖的一些高階用法。1.nsrecursivelock遞迴鎖 平時我們在 中使用鎖的時候,最容易犯的乙個錯誤就是造成死鎖,而容易造成死鎖...

Objective C中不同方式實現鎖(2)

在上一文中,我們已經討論過用objective c鎖幾種實現 跳轉位址 也用 實際的演示了如何通過構建乙個互斥鎖來實現多執行緒的資源共享及執行緒安全,今天我們繼續討論鎖的一些高階用法。1.nsrecursivelock遞迴鎖 平時我們在 中使用鎖的時候,最容易犯的乙個錯誤就是造成死鎖,而容易造成死鎖...

JS中不同方法如何實現繼承

首先來乙個父類的建構函式 父類 function person name,age,person.prototype.personlogage function let person1 newperson xiao 20 male console.log person1 person注意 物件a的 p...