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

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


那行得通。
ios - UIbutton忘记了宽度和高度-LMLPHP

但是,当我关闭应用程序并重新打开时,发生了一件奇怪的事情,该应用程序无法记住按钮的宽度和高度。

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

ios - UIbutton忘记了宽度和高度-LMLPHP

现在如何设置此按钮?

用下面的代码。

// 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(_动画:布尔){

    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图像而不是我的大头。

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

ios - UIbutton忘记了宽度和高度-LMLPHP

最佳答案

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

关于ios - UIbutton忘记了宽度和高度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59340614/

10-09 02:24