我有UIView
子类的代码。
import UIKit
class DrawingSquareView: UIView {
override func drawRect(rect: CGRect)
{
var apertureRect : CGRect = CGRectMake(80, 200, 160 , 158)
var context : CGContextRef = UIGraphicsGetCurrentContext()
/* draw the transparent rect */
CGContextSetRGBFillColor(context, 0.0, 0.0, 0.0, 0.0)
CGContextSetBlendMode(context, kCGBlendModeCopy)
CGContextFillRect(context, apertureRect)
// /* draw a white border */
CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0)
CGContextStrokeRect(context, apertureRect)
}
override func awakeFromNib()
{
var cropButtons : UIButton = UIButton(frame: CGRectMake(70, 150, 160 , 158))
cropButtons.setTitle("Crop Image", forState: UIControlState.Normal)
cropButtons.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
self.addSubview(cropButtons)
}
init(frame: CGRect)
{
super.init(frame: frame)
}
override func hitTest(point: CGPoint, withEvent event: UIEvent!) -> UIView!
{
var view : UIView = self.superview
return view.viewWithTag(99)
}
}
以及用于在UIViewController类中调用UIView子类的代码
@IBAction func CropButtonClicked(sender: UIButton)
{
var DrawingSquareObject : DrawingSquareView = DrawingSquareView(frame:self.view.frame)
self.view.addSubview(DrawingSquareObject)
}
但是当我点击superview
中的按钮时,它会显示我使用UIView
在draRect:
子类中创建的矩形,但它显示了我的UIButton在awakefromNib()
中创建。我尝试在init(frame:)
,init(coder:)
,addsubview(view:)
函数中添加子视图,其中没有一个显示UIButton
。另外,我想知道如何从DrawingSquareView
中删除此superview
。
请帮助我,提前谢谢你。
答案 0 :(得分:1)
我认为你的第一个问题是在init期间没有初始化视图,所以不要尝试添加子视图。
要从超级视图中删除DrawingSquareView,请尝试以下操作:
for view in self.view.subviews {
if view is DrawingSquareView {
view.removeFromSuperview()
}
}