[英]How do I make an UIImage/-View with rounded corners CGRect (Swift)
如何在 Swift iOS Playground 上制作帶圓角的 UIImageView?
在里面它需要填充一種顏色。
let imageView = UIImageView(frame: CGRectMake(0, 0, 100, 100))
imageView.backgroundColor = UIColor.redColor()
imageView.layer.cornerRadius = 8.0
imageView.clipsToBounds = true
結果:
對於 swift 中的圓形圖像框架,它對我有用的是:
self.profileImageView.image = UIImage(named:"profileUser")
self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2
self.profileImageView.clipsToBounds = true
添加陰影:
self.profileImageView.layer.masksToBounds = NO;
self.profileImageView.layer.cornerRadius = 8;
self.profileImageView.shadowOffset = CGSizeMake(5.0, 5.0);
self.profileImageView.shadowRadius = 5;
self.profileImageView.shadowOpacity = 0.5;
試試這個,它對我有用。
self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2
self.profileImageView.clipsToBounds = true
我厭倦了為每個 UIView 編寫設置半徑和掩碼來綁定。 所以我為 UIView 做了以下擴展。 應該適用於每個 UIView 子類,盡管我還沒有測試過。 當然,可以針對您使用的特定視圖縮小擴展范圍。
extension UIView {
func setRadius(radius: CGFloat? = nil) {
self.layer.cornerRadius = radius ?? self.frame.width / 2;
self.layer.masksToBounds = true;
}
}
如果您不傳遞任何特定值,它將默認為視圖的半寬。
如果您想有一個選項來舍入每個UIImageView
,您可以將此代碼復制到您的項目中,而不必忘記檢查clip to bounds
並將其值設置為true
import UIKit
@IBDesignable
extension UIImageView
{
private struct AssociatedKey
{
static var rounded = "UIImageView.rounded"
}
@IBInspectable var rounded: Bool
{
get
{
if let rounded = objc_getAssociatedObject(self, &AssociatedKey.rounded) as? Bool
{
return rounded
}
else
{
return false
}
}
set
{
objc_setAssociatedObject(self, &AssociatedKey.rounded, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
layer.cornerRadius = CGFloat(newValue ? 1.0 : 0.0)*min(bounds.width, bounds.height)/2
}
}
}
斯威夫特 5.0:
我個人的偏好是為像這樣的特定更改提供一個額外的 swift 文件。 然后我要做的是創建一個類,例如“RoundCorner”,它是我想在這種情況下更改為 View 元素的元素的子類。 然后我覆蓋了各個設置。
class RoundCorner: UIView {
override func draw(_ rect: CGRect) {
self.layer.cornerRadius = 10 // change this number to get the corners you want
self.layer.masksToBounds = true
}
}
之后,您只需選擇要更改的元素,並將自定義類設置為我們之前創建的類。
在身份檢查器的用戶定義的運行時屬性部分設置layer.cornerRadius = 10甚至適用於可重復元素,如表格單元格。
在 Swift 4 中,你可以很容易地做到這一點:
yourUIImage.layer.cornerRadius = 10 // Set it how you prefer
yourUIImage.layer.masksToBounds = true
如果您使用相當長的矩形圖像,例如用於您應用程序中的特色內容部分或其他任何內容,請確保將Content Mode
設置為“ Scale To Fit
,否則角會以某種方式變圓但會被嚴重切割並且不會是一個完美的圓角,而是一個圓角,然后在它夾住的地方進行銳利的切割。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.