bool detachViewToWindow(bool enable) { bool viewChanged = false; var rootView = getRootView(); if (enable && initialSuperview == null) { initialIndex = Array.IndexOf(Superview.Subviews, this); initialSuperview = Superview; var newFrame = Superview.ConvertRectToView(initialFrame, rootView); rootView.Add(this); setFrame(newFrame); viewChanged = true; } else if (!enable) { if (initialSuperview != null) { initialSuperview.InsertSubview(this, initialIndex); viewChanged = true; } setFrame(initialFrame); initialSuperview = null; } return(viewChanged); }