iOS: Add subview with a fix position on screen
ios, position, uiview, xcode
Solution
As others noted, this would be a bit easier if you didn't use a `UITableViewController`, but it's not that hard anyway.
`UITableView` is a subclass of `UIScrollView`, so table view's delegate (your `UITableViewController` instance in this case) will also receive `UIScrollViewDelegate` method calls. All you have to do is implement the method that gets called every time scroll offset changes and adjust the frame of your "fixed" view.
Something like this:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGRect fixedFrame = self.fixedView.frame;
fixedFrame.origin.y = 20 + scrollView.contentOffset.y;
self.fixedView.frame = fixedFrame;
}
Replace 20 by how many points you want it to be from top of the table view. You still add `self.fixedView` as a subliew of `self.view`, this will just make sure it looks like it's in a fixed position above table view.
Edit: with the code you posted, I'm guessing your verion should look like this:
- (void)viewDidLoad {
menuViewRelative = [[UIView alloc] init];
menuViewRelative.backgroundColor = [UIColor grayColor];
menuViewRelative.frame = CGRectMake(0.0, 0.0, 320.0, 50.0);
[self.view addSubview:self.menuViewRelative];
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
CGRect fixedFrame = self.menuViewRelative.frame;
fixedFrame.origin.y = 0 + scrollView.contentOffset.y;
self.menuViewRelative.frame = fixedFrame;
}
Problem
How do I fix a subviews position on screen (especially in UIScrollView and UITableView)? I think in storyboard ``` [self.view addSubview:aSubView]; ``` does not work anymore. Any ideas? EDIT #1: I am using a UITableViewController, not a simple UITableView. EDIT #2: ``` CGRect fixedFrame = self.menuViewRelative.frame; fixedFrame.origin.y = 0 + scrollView.contentOffset.y; self.menuViewRelative.frame = fixedFrame; menuViewRelative = [[UIView alloc] init]; menuViewRelative.backgroundColor = [UIColor grayColor]; menuViewRelative.frame = CGRectMake(0.0, 0.0, 320.0, 50.0); [self.view addSubview:self.menuViewRelative]; ```