Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据swift中的UIButton位置添加自定义视图?_Swift_Swift3_Uiview - Fatal编程技术网

如何根据swift中的UIButton位置添加自定义视图?

如何根据swift中的UIButton位置添加自定义视图?,swift,swift3,uiview,Swift,Swift3,Uiview,我正在尝试添加按钮操作的自定义视图。自定义视图已成功添加,但未正确显示 @IBAction func sideButtonAction(_ sender: UIButton) { sideSubView = SideView(frame: CGRect(x: sender.frame.origin.x ,y: sender.frame.origin.y + 40,width: 200,height: 200)) self.view.addSubview(sideSubView)

我正在尝试添加按钮操作的自定义视图。自定义视图已成功添加,但未正确显示

@IBAction func sideButtonAction(_ sender: UIButton) {
    sideSubView = SideView(frame: CGRect(x: sender.frame.origin.x ,y: sender.frame.origin.y + 40,width: 200,height: 200))
    self.view.addSubview(sideSubView)
}
在UIView类中

func xibSetup() {
    view = loadViewFromNib()
    view.frame = bounds
    view.autoresizingMask = [UIViewAutoresizing.flexibleWidth, UIViewAutoresizing.flexibleHeight]
    addSubview(view)
}

override init(frame: CGRect) {
    super.init(frame: frame)
    xibSetup()
}

在截图中,蓝色视图是自定义视图,它不能正确显示,我已将高度和宽度设置为200

谢谢,请用这个

sideSubView = SideView(frame: CGRect(x: sender.frame.origin.x - 200 ,y: sender.frame.origin.y + 40,width: 200,height: 200))

屏幕截图显示了代码正常工作。您的视图从按钮下方开始并向右移动。我假设你想在按钮下看到整个200的宽度和高度。如果是这样,那么您需要更改这一行

sideSubView = SideView(frame: CGRect(x: sender.frame.origin.x ,y: sender.frame.origin.y + 40,width: 200,height: 200))


它看起来像是导航栏上的按钮,您正在控制器视图上添加蓝色视图。两个视图都不同,因此两个视图的点坐标都不同。 您需要将相对坐标传递给蓝色视图的框架

sideSubView = SideView(frame: CGRect(x: sender.frame.origin.x + sender.frame.size.width - 200 , y: sender.frame.origin.y + sender.frame.size.height, width: 200, height: 200))