gpt4 book ai didi

ios - 在同一 View Controller 中的另一个 UIView 后面进行 UIView 更新

转载 作者:行者123 更新时间:2023-11-30 13:21:54 25 4
gpt4 key购买 nike

我正在快速制作一个使用 cocoapod 框架的应用程序 BBSlideoutMenu显示菜单。我还使用 cocoapod 框架 ChameleonFramework。我想做的是让我正在使用的汉堡按钮在打开时改变颜色。我还没有实现它,但我也想让顶部的栏透明。我已经记录了here这样你就可以看到发生了什么。基本上,只有当我滑开菜单时, View 才会更新。

免责声明:我知道使用汉堡菜单被视为糟糕的代码设计,不幸的是,这正是我在此应用程序中所需要的。

这是我的代码:

import UIKit
import BBSlideoutMenu
import ChameleonFramework

class ViewController: UIViewController, BBSlideoutMenuDelegate {

@IBOutlet var slideMenu: BBSlideoutMenu!


var button: HamburgerButton! = nil
var menuOpen = false;
let screenSize: CGRect = UIScreen.mainScreen().bounds
let topBar = UIView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height * 0.1))

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib
view.backgroundColor = UIColor.whiteColor()
topBar.backgroundColor = FlatRed()
button = HamburgerButton(frame: CGRectMake(0, 20, 54, 54))
button.addTarget(self, action: #selector(toggleMenu(_:)), forControlEvents:.TouchUpInside)
topBar.addSubview(button)
view.addSubview(topBar)

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
}

override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
slideMenu.setupEdgePan()
slideMenu.slideDirection = .Right
slideMenu.shrinkAmount = 0
slideMenu.slideTravelPercent = 0.87
slideMenu.menuOffset = 0
slideMenu.zoomFactor = 1
slideMenu.springEnabled = false
slideMenu.backgroundColor = FlatRed()
slideMenu.delegate = self
slideMenu.setupEdgePan()
}

func toggleMenu(sender : HamburgerButton!) {
if(menuOpen) {
slideMenu.dismissSlideMenu(animated: true, time: nil)
} else {
slideMenu.presentSlideMenu(true) { () -> Void in
//Runs after menu is presented
}
}
}

func didPresentBBSlideoutMenu(menu: BBSlideoutMenu) {
menuOpen = true
button.changeColor(UIColor.blackColor())
}

func didDismissBBSlideoutMenu(menu: BBSlideoutMenu) {
menuOpen = false
button.changeColor(UIColor.whiteColor())
}

}

我正在使用this hamburger menu button ,它是使用 CoreGraphicsQuartzCore 创建的,并添加了以下更改颜色的函数。

func changeColor(color: UIColor) {
for layer in [ self.topStroke, self.middleStroke, self.bottomStroke ] {
layer.fillColor = nil
layer.strokeColor = color.CGColor
layer.lineWidth = 4
layer.miterLimit = 4
layer.lineCap = kCALineCapRound
layer.masksToBounds = true

let strokingPath = CGPathCreateCopyByStrokingPath(layer.path, nil, 4, .Round, .Miter, 4)

layer.bounds = CGPathGetPathBoundingBox(strokingPath)

layer.actions = [
"strokeStart": NSNull(),
"strokeEnd": NSNull(),
"transform": NSNull()
]

self.layer.addSublayer(layer)
}
}

编辑:我尝试在按钮、topBar 和函数 toggleMenudidPresentBBSlideoutMenu 中连续使用 setNeedsDisplaydidDismissBBSlideoutMenu 但它不起作用

我也尝试过在实际 View (self.view)上调用它

最佳答案

尝试调用 setNeedsDisplay 按钮。

关于ios - 在同一 View Controller 中的另一个 UIView 后面进行 UIView 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37694405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com