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

时间:2017-09-07 06:11:51

标签: 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)
}

在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()
}

enter image description here

在屏幕截图中,蓝色视图是自定义视图,它没有正确显示,我设置的高度和宽度是200.

由于

3 个答案:

答案 0 :(得分:1)

请使用此,

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

答案 1 :(得分:0)

屏幕截图显示代码正常工作。您的视图从按钮下方开始向右移动。我假设您希望按钮下方可以看到整个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))

答案 2 :(得分:0)

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