因此,使用以下命令将UIbutton设置为框架的宽度和高度
let button = UIButton()
button.frame = CGRect(x: 0, y: 0, width: 31, height: 31) //set the frame
那行得通。
但是,当我关闭应用程序并重新打开时,发生了一件奇怪的事情,该应用程序无法记住按钮的宽度和高度。
而是这样做(参见图片),而不是停留在31 x 31中。
现在如何设置此按钮?
用下面的代码。
// 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图像而不是我的大头。
所以我想知道如何解决这个奇怪的问题。
最佳答案
如果要手动设置按钮的框架,则需要在viewDidLayoutSubviews
中进行设置,以便每次父视图的框架发生更改时都可以正确设置按钮的框架。惯用的正确方法是使用自动布局而不是手动调整帧大小。
关于ios - UIbutton忘记了宽度和高度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59340614/