What I believe is happening here (after some experimenting) is your viewport is being set correctly to be from 0,160 to 560,720 (so its a 560x560 region in the bottom left).
The view is being scaled so the coordinates 560x560 match the viewport (the viewport is based on window size, the view is the coordinates inside of the viewport).
But the y offset is being applied to both view and viewport. If the view y offset was 0, then the top left of the inside of the viewport is mapped to 0,0 and the bottom right to 560,560. If the view y offset is set to 160, then the top left of the viewport is mapped to 0,160 and the bottom right to 560,720. So if you then draw stuff assuming 560 is the bottom edge, it will stop at the window's 560 instead of 720.
For example, here I've got a 1280x720 window and a 560x560 sprite. I'm using your settings (view is 0,160,560,560. viewport is 0,0.2222,1,0.4375,0.7777).
The blue and white grid part is the actual area of the viewport. The sprite is starting too high, so it doesn't go all the way to the bottom and you can see some of the blue area that should be covered up.
Here is everything the same, but I set the view's y position to 0.