Like the guys said, yes, the function receives the window size, not the view's. Also, you *should* be calling the function only after the Resized event, but calling it every time you create the view will also work if you are creating the view every frame instead of having it as a member.
Like Hapax said, the viewport values are between 0 and 1, and you shouldn't be using this when creating the view, just use 0 and 0. Remember, when creating a view using a rectangle, the first two numbers indicate the position while the other two numbers indicate the size.
I think something like this should work, and you won't need to call the function after the Resized event because the view is created on the fly:
void UserInterface::Draw()
{
int viewWidth = _renderService.Window.getView().getSize().x;
int viewHeight = _renderServide.Window.getView().getSize().y;
int windowWidth = _renderService.Window.getSize().x;
int windowHeight = _renderService.Window.getSize().y
sf::View interfaceView( sf::FloatRect(0, 0, viewWidth, viewHeight) );
interfaceView = _renderService.getLetterboxView(interfaceView, windowWidth, windowHeight);
_renderService.Window.setView(interfaceView);
_renderService.Window.draw(BottomBar);
(...)
}
I still think that having the view as a member would be better, but whatever