[英]Floating button is not always visible on top
我創建了一個浮動按鈕,以便始終在頂部向用戶顯示它,但是當我使用啟動的UINavigationController
呈現 controller 時,它隱藏在呈現的視圖后面
我有一個解決方案,但必須在每個呈現的視圖 controller 上實施。
我創建了一個 function 將其移到前面,但為此我需要在每個呈現的視圖 controller 上添加代碼。 有沒有更好的解決方案?
@objcMembers
final class MenuFloatingButton: UIView
{
static let tagValue = 99988
init(exitGuideTourButtonY: CGFloat)
{
let calculatedFrame = CGRect(x: ExitTourButtonConstant.leftPadding, y: exitGuideTourButtonY, width: ExitTourButtonConstant.buttonWidth, height: ExitTourButtonConstant.buttonHeight)
super.init(frame: calculatedFrame)
frame = calculatedFrame
layer.cornerRadius = ExitTourButtonConstant.buttonHeight * ExitTourButtonConstant.halfValue
clipsToBounds = true
tag = ExitGuideTourFloatingButton.tagValue
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(tapDetected))
addGestureRecognizer(tapGesture)
backgroundColor = ExitTourButtonConstant.buttonColor
let titleLabel = UILabel(frame: bounds)
titleLabel.text = ExitTourButtonConstant.buttonTitle
titleLabel.textAlignment = .center
titleLabel.font = ExitTourButtonConstant.buttonTitleFont
titleLabel.backgroundColor = .clear
titleLabel.textColor = .white
addSubview(titleLabel)
}
required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
theUnexpectedHasHappened()
}
}
我這樣稱呼它
- (void)addExitGuideTourDemoButtonView:(CGFloat)exitGuideTourButtonY
{
UIView* exitDemoButtonView = [self getExitButtonView];
if (exitDemoButtonView == nil)
{
exitDemoButtonView = [[ExitGuideTourFloatingButton alloc] initWithExitGuideTourButtonY:exitGuideTourButtonY];
[self.window addSubview:exitDemoButtonView];
}
else
{
// Do nothing
}
}
- (UIView*)getExitButtonView
{
UIView* exitGuideTourDemoButtonView = [self.window viewWithTag:ExitGuideTourFloatingButton.tagValue];
return exitGuideTourDemoButtonView;
}
當您將按鈕添加為子視圖時,添加類似
view.insertSubview(你的按鈕,在索引:0)
請參考以下鏈接。 https://developer.apple.com/documentation/uikit/uiview/1622538-insertsubview
或者,您可以在 window 上添加一個按鈕。
var window:UIWindow = UIApplication.sharedApplication().keyWindow window.addSubview(yourButton)
展示 controller 后,立即為 yourButton 使用bringSubviewToFront。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.