[英]how to make Designable UIImage in Swift
I am a beginner. 我是初学者。 I want to make a swift file that contains a code to make Designable UIImage, so I will not edit the UI element display by coding, just in Interface builder by assigning this swift file to UI class. 我想制作一个包含使Designable UIImage可用的代码的swift文件,所以我不会通过编码来编辑UI元素的显示,而只是在Interface Builder中通过将该swift文件分配给UI类来进行编辑。
I can do something similar in UIButton, for example if i want to make round corner and add border to UIButton i can do something like this 我可以在UIButton中做类似的事情,例如,如果我想做圆角并向UIButton添加边框,我可以做这样的事情
import UIKit
@IBDesignable
class DesignableButton: UIButton {
@IBInspectable var cornerRadiusOfButton : CGFloat = 0 {
didSet {
layer.cornerRadius = cornerRadiusOfButton
}
}
@IBInspectable var borderWidth: CGFloat {
set {
layer.borderWidth = newValue
}
get {
return layer.borderWidth
}
}
@IBInspectable var borderColor: UIColor? {
set {
guard let uiColor = newValue else { return }
layer.borderColor = uiColor.cgColor
}
get {
guard let color = layer.borderColor else { return nil }
return UIColor(cgColor: color)
}
}
}
for UIImage, usually we want to add round corner or to make circular UIImage by using this code 对于UIImage,通常我们想使用此代码添加圆角或制作圆形UIImage
// round corner
someImage.layer.cornerRadius = checkinPhoto.bounds.width/20
someImage.clipsToBounds = true
// circular image
someImage.layer.cornerRadius = someImage.frame.size.width / 2
someImage.clipsToBounds = true
how to make those code to @IBDesignable code class for UIImage like Designable UIButton above? 如何使这些代码成为UIImage的@IBDesignable代码类,例如上面的Designable UIButton? I have tried to make by subclassing UIImage, but i don't why i can't access layer
and clipToBounds
我试图通过子类化UIImage进行制作,但是我不解释为什么我无法访问layer
和clipToBounds
You can't use UIImage
as designable because UIImage
is not a UIView
subclass you need to make designable your UIImageView
instead, the UIImage
can't be rendered by itself needs a UIImageView
to be rendered 您不能将UIImage
用作可设计的对象,因为UIImage
并非需要使UIImageView
可设计的UIView
子类,因此,不能单独呈现UIImage
,而需要呈现UIImageView
Use this class 使用这个课程
import UIKit
@IBDesignable
class RoundableImageView: UIImageView {
@IBInspectable var cornerRadius : CGFloat = 0.0{
didSet{
self.applyCornerRadius()
}
}
@IBInspectable var borderColor : UIColor = UIColor.clear{
didSet{
self.applyCornerRadius()
}
}
@IBInspectable var borderWidth : Double = 0{
didSet{
self.applyCornerRadius()
}
}
@IBInspectable var circular : Bool = false{
didSet{
self.applyCornerRadius()
}
}
func applyCornerRadius()
{
if(self.circular) {
self.layer.cornerRadius = self.bounds.size.height/2
self.layer.masksToBounds = true
self.layer.borderColor = self.borderColor.cgColor
self.layer.borderWidth = CGFloat(self.borderWidth)
}else {
self.layer.cornerRadius = cornerRadius
self.layer.masksToBounds = true
self.layer.borderColor = self.borderColor.cgColor
self.layer.borderWidth = CGFloat(self.borderWidth)
}
}
override func awakeFromNib() {
super.awakeFromNib()
self.applyCornerRadius()
}
override func layoutSubviews() {
super.layoutSubviews()
applyCornerRadius()
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.