alvarolopez
alvarolopez

Reputation: 467

Remove between UITableView and UINavigationBar

I have an UITableView which I am trying to make the background color of the first cell match the color of the UINavigationBar, as seen in the screenshot below.

iOS Simulator Screenshot

However, as you can see, there is a dark border between both objects which I don't know where is coming from.

Moreover, it is evident that the tone of the color used is not the same in both cases, despite using the same [UIColor colorWithRed:] code. This is not the main problem, but I wanted to mention this too.

Any thoughts?

EDIT

viewDidLoad:

self.tableView.separatorColor = [UIColor clearColor];
self.tableView.backgroundColor = [UIColor colorWithRed:0.97 green:0.97 blue:0.97 alpha:1.0];
self.tableView.scrollEnabled = NO;

self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.clipsToBounds = YES;
self.navigationController.navigationBar.translucent = NO;

cellForRowAtIndexPath:

cell.backgroundColor = myColor;

Upvotes: 1

Views: 343

Answers (2)

0yeoj
0yeoj

Reputation: 4550

Try this:

[self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];
[self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc]init] forBarMetrics:UIBarMetricsDefault];

But if you want to remove the hairline alone and keeping the blur effect, try:

self.navigationController.navigationBar.clipsToBounds = YES;

and by the way, this is my actual code of testing:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIView *red = [[UIView alloc] initWithFrame:CGRectMake(0, 20, 44, 44)];
    red.backgroundColor = [UIColor redColor];
    [self.view addSubview:red];

    self.navigationController.navigationBar.translucent = YES;
    self.navigationController.navigationBar.clipsToBounds = YES;
}

Sample output be:

enter image description here

Update:

Looks like -clipToBounds do not suits your implementation.
Here what i think suits yours:

self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:0 green:0.5 blue:0.97 alpha:1.0];
[self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];
[self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc]init] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.translucent = NO;

Before:                            After:

enter image description here enter image description here

Note: The [UIColor colorWithRed:0 green:0.5 blue:0.97 alpha:1.0] is just for example, assign your desired color to .barTintColor.

Perhaps

//0084D3
UIColor * color = [UIColor colorWithRed:0/255.0f green:132/255.0f blue:211/255.0f alpha:1.0f]; 

//006FCC
UIColor * color = [UIColor colorWithRed:0/255.0f green:111/255.0f blue:204/255.0f alpha:1.0f];

is what you need based from UIColor Code Generator :)

Hope this is helpful.. Cheers.. :)

Upvotes: 2

user1078170
user1078170

Reputation:

The line you're seeing is the navigation bar's shadowImage. You can remove it by adding

self.navigationController.navigationBar.shadowImage = [UIImage new];

EDIT

Not sure if you've solved this already, but I set up a brand new project with a UITableViewController embedded in a UINavigationController and there's no line under the nav bar. Here's the configuration I did: In viewDidLoad:

self.navigationController.navigationBar.translucent = NO;
[self.navigationController.navigationBar setBarTintColor:myColor];
self.tableView.backgroundColor = myColor;
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

In tableView:cellForRowAtIndexPath:

cell.contentView.backgroundColor = myColor;
cell.textLabel.backgroundColor = myColor;
cell.textLabel.text = @"this";

Nothing special in Storyboard.

enter image description here

Upvotes: 1

Related Questions