簡體   English   中英

浮動按鈕並不總是在頂部可見

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM