Reputation: 75296
I have a view with about 30 subviews on it. I want to add code in my subview's viewcontroller so that when I tap the subview, the subview expands to fill the screen.
I'm using [self.view setFrame:rect]
to expand the subview, and this works fine. The problem is that some of the other 29 subviews are above the subview that I just tapped, so they're still visible.
I've tried using bringSubviewToFront
from the parent viewcontroller, but this appears to have no effect. Is there any code I can put in my subview's viewcontroller class to make this happen?
Upvotes: 64
Views: 69800
Reputation: 3
In Objective-C, where
[self.view.superview bringSubviewToFront: txtNotes];
Upvotes: -2
Reputation: 261
In Objective-C:
[self.superview bringSubviewToFront: subview];
In Swift 2.3:
self.superview!.bringSubviewToFront(subview)
In Swift 3.1.1 - Swift 4.1:
superview.bringSubview(toFront: subview)
Upvotes: 3
Reputation: 356
For the ease of use an extension in Swift 3
extension UIView {
func bringToFront() {
self.superview?.bringSubview(toFront: self)
}
}
Upvotes: 3
Reputation: 2826
Use this code, even you don't know about superView:
In objective-c:
[subview.superview bringSubviewToFront: subview];
In swift:
subview.superview?.bringSubview(toFront: subview)
Upvotes: 12
Reputation: 3552
bringSubviewToFront should work, just make sure you're using it correctly. The usage is.
[parentView bringSubviewToFront:childView];
Upvotes: 171