UIbutton忘记宽度和高度

问题描述 投票:0回答:2

因此,使用以下命令将UIbutton设置为框架的宽度和高度

let button = UIButton()
button.frame = CGRect(x: 0, y: 0, width: 31, height: 31) //set the frame

并且可行。enter image description here

但是,当我关闭应用程序并重新打开时,在应用程序无法记住按钮的宽度和高度的情况下,我会发生这种奇怪的事情。

而不是这样做(参见图片),而不是停留在31 x 31中。

the right button

现在如何设置此按钮?

使用以下代码。

// Image needs to be added to project.
                     let button = UIButton()
                     button.frame = CGRect(x: 0, y: 0, width: 31, height: 31) //set the frame
                     // let modifier = AnyImageModifier { return $0.withRenderingMode(.alwaysOriginal) }
                     button.kf.setImage(with: fburl, for: .normal, placeholder: nil)
                     button.addTarget(self, action: Selector(("yourActionFunc")), for: .touchUpInside)
                     let barButton = UIBarButtonItem()
                     barButton.customView = button
                     self.tabBarController?.navigationItem.rightBarButtonItem = barButton
                    //END FACEBOOK PROFILE IMAGE

我不认为它与上面的代码有任何关系,我认为这与功能有关

覆盖func viewDidAppear(_动画:Bool){

    print(defaults.string(forKey: defaultsKeys.socialLogin))
     self.tabBarController?.navigationItem.title = "DRN1"
    let sessionsocial = self.defaults.string(forKey: defaultsKeys.socialLogin)
    if sessionsocial == nil {
     // Image needs to be added to project.
     let buttonIcon = UIImage(systemName: "person.circle")

    let rightBarButton = UIBarButtonItem(title: "Person", style: UIBarButtonItem.Style.done, target: self, action: #selector(FirstViewController.checkLogin(_:)))
     rightBarButton.image = buttonIcon

      self.tabBarController?.navigationItem.rightBarButtonItem = rightBarButton
       //self.tabBarController?.navigationItem.rightBarButtonItem.backgroundColor = UIColor(patternImage: UIImage(systemName: "ng")
    //self.tabBarController?.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: "person.circle", target: self, action: nil)

    }
  }

但是我知道它没有运行该代码,因为我会看到一个person.circle图像而不是我的大头。

所以我想知道如何解决这个奇怪的问题。

enter image description here

ios swift uibutton
2个回答
0
投票

如果要手动设置按钮的框架,则需要在viewDidLayoutSubviews中进行设置,以便每次父视图的框架发生变化时都可以正确设置按钮的框架。惯用的正确方法是使用自动布局而不是手动调整帧大小。


0
投票

按钮是可变对象。通过使其成为视图控制器上的实例变量而不是局部变量来保留对其的引用。您也可以随时通过浏览其父子视图来恢复它(一个超级视图子视图数组保留其子视图),但这通常不是正确的处理方式。

© www.soinside.com 2019 - 2024. All rights reserved.