Prescott Chartier
Prescott Chartier

Reputation: 1653

App did not run at iPhone resolution when reviewed on iPad running iOS 10.2.3

This is my first iOS app, designed explicitly for the iPhone, not iPad, but apparently Apple won't put it on their store unless it will run on a iPad as well. I'm at a total loss as how to "fix" this. I've searched everywhere for suggestions and nothing I've tried works (including here on StackOverflow). I can run the app in the iPad simulator and get the same results as Apple does, but can't seem to find a fix. This is proving extremely frustrating, especially when one considers that this app won't run on a iPad because it needs access to a cellular network.

I'm using the latest Xamarin for Visual Studios and I'm using Visual Studios 2013. There is no mention of the iPad in Info.plist or anywhere else for that matter

Anyone have any suggestions?

R/ Prescott ....

Upvotes: 0

Views: 161

Answers (2)

Prescott Chartier
Prescott Chartier

Reputation: 1653

All,

Apple requires that apps run on all iOS platforms. Accordingly I had to add constraints to my storyboard to adjust the location of subviews on each screen. Because adding each constraint is tedious, I used Cirrious Fluent Layout which worked very well for me. Below is the code I used on my screen that included a imageview. This was the most complicated screen to "fix" because (apparently) the imagevies somehow changed all the screen sizes, being an iOS developer novice, I had no idea why this worked, only that it did.

First I needed to add the reference:

using Cirrious.FluentLayouts.Touch;

Code:

//This line is required to turn off all autosizing/positioning
View.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints();

// Get the screen dimensions and the middle of the screen 
// for button positioning

var barheight = this.NavigationController.NavigationBar.Bounds.Height; 
// Height of the navigation bar

var height = UIScreen.MainScreen.Bounds.Height; 
var width = UIScreen.MainScreen.Bounds.Width;
int middle = (int) UIScreen.MainScreen.Bounds.Width / 2;  
// We cast to int to truncate float, 
// int will convert implictly to float when used (Visual Studio).


var heightavailabletoimageviw = height -74 - 47 - 26 - 60; 
// 74 is the height of the banner, 47 is the height of the buttons and 
// 26 is the height of the title label plus a 5px gap  The rest of the 
// screen is available for use by the image view, 
// set heightavailabletoimageviw to this value
// Had to subtract 60 because the image view still overlapped 
// the buttons, no idea why.  Anyone?

// Had to add a constraint to the imageview because if I didn't
// it automatically scaled to the size of the image, not good.
ThePhoto.AddConstraints(
    ThePhoto.Width().EqualTo(UIScreen.MainScreen.Bounds.Width),
    ThePhoto.Height().EqualTo(heightavailabletoimageviw) 
);

// Had to fix the size of the imagebutton otherwise the button size
// scaled to the size of the image
btnPhoto.AddConstraints(
    btnPhoto.Width().EqualTo(62f),
    btnPhoto.Height().EqualTo(47f)
);

// Now we add the constraints to the viewcontroller to finish up.
View.AddConstraints(

    // Can't cover the navigation bar (unless it isn't there, mine is), 
    // this value sets all other relative positions    
    Banner.AtTopOf(View, barheight), 
    Banner.AtRightOf(View, 0),
    Banner.AtLeftOf(View, 0),

    lblTitle.Below(Banner, 0),
    lblTitle.WithSameWidth(Banner),

    ThePhoto.Below(lblTitle, 5), 
    ThePhoto.WithSameWidth(lblTitle),

    // I have no idea why, but I had to use negative
    // values for the buttons to appear on the screen,
    // otherwise they were off screen.
    // If anyone could explain this, I would appreciate it.
    btnUpload.AtBottomOf(View),
    btnUpload.ToLeftOf(View,-60),

    // Same here, had to use negative values for button to
    // position correctly on the screen
    btnPhoto.AtBottomOf(View), 
    btnPhoto.ToLeftOf(View,-(middle + 31)),

   // Again, same thing.
   btnMainMenu.AtBottomOf(View),
   btnMainMenu.ToRightOf(View,-80)

);

This is how I solved my problem, I re-submitted the app and it now appears on the app store at: https://itunes.apple.com/us/app/oml-photo-manager/id1212622377?mt=8.

Hope this helps someone ....

R/ Prescott ...

Upvotes: 0

pinedax
pinedax

Reputation: 9346

You are receiving this from Apple because you might have indicated your app is an Universal App.

To indicate your application will only run on iPhones you need to set this in the info.Plist file if using Xamarin Studio. When using Visual Studio this is in the project properties. The option is called "Devices" make sure you select iPhone/iPod from the dropdown list.

Device selection in VS2017 I know you said you are using 2013 but this might give you an idea.

change device in VS

Upvotes: 0

Related Questions