আইফোন 5 এর স্ক্রিন রেজোলিউশনের জন্য কীভাবে অ্যাপ্লিকেশন বিকাশ বা মাইগ্রেট করবেন?


495

নতুন আইফোন 5 ডিসপ্লেতে একটি নতুন দিক অনুপাত এবং একটি নতুন রেজোলিউশন রয়েছে (640 x 1136 পিক্সেল)।

নতুন স্ক্রিন আকারে ইতিমধ্যে বিদ্যমান অ্যাপ্লিকেশনগুলিকে নতুন বা রূপান্তর করার জন্য কী প্রয়োজন?

পুরানো প্রদর্শন এবং নতুন প্রশস্ত পর্দার দিক অনুপাত উভয়ের জন্য অ্যাপ্লিকেশনগুলিকে "সর্বজনীন" করার জন্য আমাদের কী মনে রাখা উচিত?

উত্তর:


481
  1. এক্সকোডের সর্বশেষ সংস্করণটি ডাউনলোড এবং ইনস্টল করুন ।
  2. আপনার অ্যাপের জন্য একটি লঞ্চ স্ক্রিন ফাইল সেট করুন (আপনার লক্ষ্য সেটিংসের সাধারণ ট্যাবে) tab আপনি এইভাবে আইওএস 9 এ আইপ্যাড স্প্লিট ভিউ আকার সহ যে কোনও স্ক্রিনের পুরো আকার ব্যবহার করতে পারেন।
  3. আপনার অ্যাপ্লিকেশনটি পরীক্ষা করুন এবং আশাকরি অন্য কিছু করবেন না, কারণ আপনি যদি স্বয়ংক্রিয়ভাবে পুনরায় আকার দেওয়ার মুখোশগুলি সঠিকভাবে সেট করে রেখেছিলেন বা অটো লেআউট ব্যবহার করেন তবে সবকিছু ম্যাজিকালি কাজ করা উচিত।
  4. আপনি যদি তা না করেন তবে অটো লেআউট দিয়ে আপনার ভিউ লেআউটগুলি সামঞ্জস্য করুন।
  5. যদি বিশেষত বড় স্ক্রিনগুলির জন্য আপনাকে কিছু করতে হয় তবে মনে হয় আপনাকে উচ্চতা যাচাই [[UIScreen mainScreen] bounds]করতে হবে কারণ এর জন্য কোনও নির্দিষ্ট এপিআই নেই বলে মনে হচ্ছে। আইওএস 8 এর মতো আকারের শ্রেণিগুলিও রয়েছে যেগুলি স্ক্রিন মাপগুলি নিয়মিত বা কমপ্যাক্টে উল্লম্ব এবং অনুভূমিকভাবে রূপান্তরিত করে এবং আপনার ইউআই মানিয়ে নেওয়ার প্রস্তাবিত উপায়।

1
সম্ভবত এটি একটি শ্যুট-দ্য ম্যাসেঞ্জার জিনিস। নতুন রেজোলিউশন এবং দিক অনুপাত? নতুন অটোরোটেশন? Noooo! আসলে, আরও অটোরিটেশন নিয়ন্ত্রণটি দুর্দান্ত হতে পারে।
ছন্দবদ্ধ ফিস্টম্যান

89
এটি লক্ষণীয় যে [UII চিত্র চিত্রনামযুক্ত: @ "ব্যাকগ্রাউন্ড.পিএনজি"] এখনও কেবল "ব্যাকগ্রাউন্ড.পিএনজি" বা "ব্যাকগ্রাউন্ড@2x.png" লোড করবে, এটি বিদ্যমান থাকলে "ব্যাকগ্রাউন্ড-568h@2x.png" লোড করবে না ।
টিভিন

1
"ডিফল্ট-568h@2x.png" যোগ করা হচ্ছে নাকি বিল্ড সেটিংসে আমাদের / সামঞ্জস্য করতে পারি এমন কোনও অতিরিক্ত বিকল্প রয়েছে?
লুকাসজ

3
@ লুকাস 1111 পিক্স উচ্চতা সমর্থন করার পক্ষে এটি যথেষ্ট (এবং একমাত্র উপায়)। আপনার অ্যাপটি যেভাবে সঠিকভাবে প্রসারিত হবে তার উপর নির্ভর করে আপনি কীভাবে আপনার দৃষ্টিভঙ্গি সেটআপ করেন তার উপর নির্ভর করে, তবে আপনি যদি সমস্ত কিছু হার্ড-কোডড করেও থাকেন তবে স্বয়ংক্রিয় আকারের মুখোশ বা অটোলেআউট সেটআপ করার জন্য এটি খুব বেশি কাজ করা উচিত নয়।
ফিলিপ রেডেলিক

1
@ ফিলিপ্রেডিলিক - আপনি যে রেজোলিউশনটি নির্দিষ্ট করেছেন অর্থাৎ 1136 * 960, এটি 1136 * 640 হল .. ?? ..
নিক কেকি

117

আপনার যদি আইফোন 4 এস বা তারও আগের জন্য তৈরি একটি অ্যাপ থাকে তবে এটি আইফোন 5 এ লেটারবক্সযুক্ত চলবে run

আপনার অ্যাপ্লিকেশনটিকে নতুন লম্বা পর্দার সাথে মানিয়ে নিতে, আপনি প্রথমে যা করছেন তা হ'ল লঞ্চ চিত্রটি এতে পরিবর্তন করুন: Default-568h@2x.png। এর আকার 1136x640 (HxW) হওয়া উচিত। হাঁ, নতুন স্ক্রিন সাইজ ডিফল্ট ইমেজ থাকার আপনার অ্যাপ নতুন আইফোন 5 স্ক্রীন গোটা নিয়ে যাক চাবিকাঠি

(নোট করুন যে নামকরণ কনভেনশনটি কেবলমাত্র ডিফল্ট চিত্রের জন্য কাজ করে another বিভিন্ন স্ক্রিন আকারের জন্য, আপনাকে এটি প্রোগ্রামগতভাবে করতে হবে))

আপনি যদি খুব ভাগ্যবান হন তবে তা হতে পারে ... তবে সমস্ত সম্ভাবনার মধ্যে আপনাকে আরও কয়েকটি পদক্ষেপ নিতে হবে।

  • নিশ্চিত হয়ে নিন যে আপনার এক্স / ভিউগুলি তাদের পুনরায় আকার দেওয়ার জন্য অটো-লেআউট ব্যবহার করে।
  • মতামতের আকার পরিবর্তন করতে স্প্রিংস এবং স্ট্রুট ব্যবহার করুন Use
  • এটি যদি আপনার অ্যাপ্লিকেশনটির পক্ষে যথাযথ না হয় তবে একটি নির্দিষ্ট পর্দার আকারের জন্য আপনার এক্সিব / স্টোরিবোর্ডটি ডিজাইন করুন এবং অন্যটির জন্য প্রোগ্রাম্যাটিকভাবে স্থান দিন।

চরম ক্ষেত্রে (যখন উপরের কোনওটিই যথেষ্ট নয়), দুটি এক্সবস ডিজাইন করুন এবং ভিউ কন্ট্রোলারে উপযুক্তটিকে লোড করুন।

পর্দার আকার সনাক্ত করতে:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
    CGSize result = [[UIScreen mainScreen] bounds].size;
    if(result.height == 480)
    {
        // iPhone Classic
    }
    if(result.height == 568)
    {
        // iPhone 5
    }
}

হাই সঞ্জয়, যেমন আমাদের এটির আইফোন 5 বা তার আগে যেমন আছে তা আবিষ্কার করতে হবে, সুতরাং সেই অনুসারে সবকিছুকেই আকার পরিবর্তন করতে হবে, যেমন আমি বলি যে আমার কাছে নেভিগেশন বার এবং ট্যাববারের সাথে উচ্চতা 367 আছে একটি টেবিলভিউ আছে, আইফোন 5 -র জন্য আমার আকার পরিবর্তন করতে হবে
রাহিল সাদিক

2
আইপড টাচ সম্পর্কে কি? পরবর্তী আইফোন প্রজন্মের কী হবে? একজনের পর্দার আকারগুলি উল্লেখ করা উচিত, 3.5inch / 4inch নয় আইফোন / আইফোন 5
ভ্যালেক্স

2
আরও একটি সন্ধানের লক্ষ্য হ'ল আপনার এক্সিবকে পুনরায় আকার দেওয়ার আগে ভিউডিডলড ডেকে আনা হয়, তাই আপনি যদি নিবের জিনিসগুলির উপর ভিত্তি করে কোনও গণনা করছেন তবে কীভাবে অবস্থানটি স্থানান্তরিত হতে পারে সে সম্পর্কে সচেতন হন (বা ভিউওয়্যাল অ্যাপায়ারে গণনা বলেছিলেন)।
কেন্ডল হেলস্টেটার জেলনার

30

কেবলমাত্র প্রয়োজনীয় জিনিসটি হ'ল অ্যাপ্লিকেশন সংস্থাগুলিতে "Default-568h@2x.png" নামের একটি লঞ্চ চিত্র যুক্ত করা এবং সাধারণ ক্ষেত্রে (আপনি যদি যথেষ্ট ভাগ্যবান হন) তবে অ্যাপটি সঠিকভাবে কাজ করবে।

যদি অ্যাপ্লিকেশনটি স্পর্শ ইভেন্টগুলি পরিচালনা না করে তবে কী উইন্ডোটির যথাযথ আকার রয়েছে তা নিশ্চিত করুন। কাজের ফ্রেমটি সঠিক ফ্রেম সেট করতে হবে:

[window setFrame:[[UIScreen mainScreen] bounds]]

আইওএস mig এ স্থানান্তরিত করার সময় স্ক্রিনের আকারের সাথে সম্পর্কিত নয় এমন অন্যান্য সমস্যা রয়েছে details. বিবরণের জন্য আইওএস .0.০ রিলিজ নোট পড়ুন ।


22

কখনও কখনও (প্রাক-স্টোরিবোর্ড অ্যাপ্লিকেশনগুলির জন্য), যদি লেআউটটি যথেষ্ট আলাদা হয়ে যায়, তবে ডিভাইস অনুযায়ী এটি একটি আলাদা xib নির্দিষ্ট করা উচিত ( এই প্রশ্নটি দেখুন - আইফোন 5 এর সাথে ডিল করার জন্য আপনাকে কোডটি পরিবর্তন করতে হবে) ভিউ কন্ট্রোলারে আর, যদি আপনার বিভিন্ন গ্রাফিকের প্রয়োজন হয় তবে স্বয়ংক্রিয়করণের মুখোশগুলির সাথে পরিমাণমতো টুইটারিং কাজ করবে না।

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    NSString *myNibName;
    if ([MyDeviceInfoUtility isiPhone5]) myNibName = @"MyNibIP5";
    else myNibName = @"MyNib";

    if ((self = [super initWithNibName:myNibName bundle:nibBundleOrNil])) {


...

এটি পুরানো আইওএস সংস্করণগুলিকে লক্ষ্য করে এমন অ্যাপগুলির জন্য দরকারী for


+1 এমন কিছু সম্পর্কে ক্লান্ত হওয়ার মতো বিষয় হ'ল ভবিষ্যতের সামঞ্জস্য। বর্তমানে এই কোডের টুকরাটি নিরাপদ নয় কারণ এটি কেবল আইফোন 5 ডিভাইসটি বিবেচনায় নেয়, পর্দার আকারের জন্য পরীক্ষা করা একটি নিরাপদ বিকল্প হতে পারে।
স্টাননার

সত্য - এটি ইউটিলিটির অংশ হতে পারে যা ডিভাইসের ধরণটি দেয় - এটি ডিভাইসটি পাওয়ার বিষয়ে নয়, কীভাবে বিভিন্ন নিব ব্যবহার করতে হয় তা দেখানোর জন্য এটি একটি উদাহরণ মাত্র।
সোমমামন

20

এখানে আপনি একটি সুন্দর টিউটোরিয়াল খুঁজে পেতে পারেন (মনো-টাচের জন্য, তবে আপনি নন-মনো-টাচ-প্রকল্পগুলির জন্যও তথ্যটি ব্যবহার করতে পারেন): http://redth.info/get-your-monotouch-apps- چمتو-for- iPhone 5
-ios-6-আজ /

  1. " ডিফল্ট-568h@2x.png " নামটি সহ আপনার স্প্ল্যাশ / ডিফল্ট স্ক্রিনের ( 640 x 1136 পিক্সেল ) জন্য একটি নতুন চিত্র তৈরি করুন

  2. ইন আইওএস সিমুলেটার , হার্ডওয়্যারের যান -> ডিভাইস মেনু, এবং নির্বাচন করুন " আইফোন (অক্ষিপট 4-ইঞ্চি) "

  3. অন্যান্য চিত্র তৈরি করুন, উদাহরণস্বরূপ পটভূমি চিত্র

  4. আপনার নতুন চিত্রগুলি লোড করতে আইফোন 5 সনাক্ত করুন:

public static bool IsTall
{
    get {
        return UIDevice.currentDevice.userInterfaceIdiom
                    == UIUserInterfaceIdiomPhone
                && UIScreen.mainScreen.bounds.size.height
                    * UIScreen.mainScreen.scale >= 1136;
    }
}

private static string tallMagic = "-568h@2x";
public static UIImage FromBundle16x9(string path)
{
    //adopt the -568h@2x naming convention
    if(IsTall())
    {
        var imagePath = Path.GetDirectoryName(path.ToString());
        var imageFile = Path.GetFileNameWithoutExtension(path.ToString());
        var imageExt = Path.GetExtension(path.ToString());
        imageFile = imageFile + tallMagic + imageExt;
        return UIImage.FromFile(Path.Combine(imagePath,imageFile));
    }
    else
    {
        return UIImage.FromBundle(path.ToString());
    }
}

13

XIB গুলি মাধ্যমে আইফোন 5 এবং আইফোন 4 স্থানান্তরিত করা সহজ .........

UIViewController *viewController3;
if ([[UIScreen mainScreen] bounds].size.height == 568)
{
    UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone5screen" bundle:nil] autorelease];               
}    
else
{
     UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone4screen" bundle:nil] autorelease];
}

12

আমি এই সমস্যাটি এখানে সমাধান করি । চিত্রগুলিতে কেবল ~ 568 ঘন্টা @ 2x প্রত্যয় এবং xib এর সাথে ~ 568 ঘন্টা যোগ করুন। আর রানটাইম চেক বা কোড পরিবর্তন দরকার নেই।


প্রকল্পে এই ক্লাস যুক্ত করুন। আপনার অতিরিক্ত কোড লেখার দরকার নেই। উদাহরণস্বরূপ, 320x480, 640x960, 640x1136 (আইফোন 3, আইফোন 4, আইফোন 5) সহ আপনার পটভূমির চিত্রগুলির সাথে একটি এক্সবি-ফাইল রয়েছে ib ঠিক সঠিক অটোরিসাইজিং মাস্ক এবং নাম চিত্রগুলি সেট করুন চিত্র.png, image@2x.png, image~568h@2x.png।
শিমনস্কি আর্টেম

@ শিমনস্কি আর্টেম তবে আমি লক্ষ্য করেছি যে কিছু উপাদান অন্য অবস্থানে চলে !, আপনার কি কোনও ধারণা আছে ????
আদেল

আপনার অটোরিসাইজিং মাস্কগুলি পরীক্ষা করুন। আমি অন্য কোন কারণ দেখতে পাচ্ছি না।
শিমনস্কি আর্টেম

10

আমি নতুন ডিফল্ট লঞ্চ চিত্র যুক্ত করেছি এবং (বেশ কয়েকটি এসই উত্তরগুলি পরীক্ষা করে দেখে ...) আমার স্টোরিবোর্ডগুলি নিশ্চিত করেছে যে সমস্ত স্টোরবোর্ডগুলি স্বয়ংক্রিয় আকারের এবং সাবউভিউ রয়েছে তবে রেটিনা 4 ইঞ্চি এখনও লেটারবক্সে রয়েছে।

তারপরে আমি লক্ষ্য করেছি যে আমার ইনফরমেশন লিস্টে " লঞ্চ চিত্র " এর জন্য " ডিফল্ট.পিএনজি " সেট করার জন্য একটি লাইন আইটেম রয়েছে , যা আমি এইভাবে সরিয়ে দিয়েছি এবং যাদুকরীভাবে লেটারবক্সিং আর উপস্থিত হবে না। আশা করি, এটি অন্য কাউকে একই ধরণের ক্ষিপ্ততায় বাঁচিয়েছে।


9

আমার ধারণা, এটি সব ক্ষেত্রেই কাজ করে না, তবে আমার বিশেষ প্রকল্পে এটি আমাকে এনআইবি-ফাইলগুলির সদৃশ থেকে বিরত রেখেছে:

আপনি কোথাও কোথাও common.hস্ক্রিন উচ্চতার বাইরে এই সংজ্ঞাগুলি তৈরি করতে পারেন:

#define HEIGHT_IPHONE_5 568
#define IS_IPHONE   ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 ([[UIScreen mainScreen] bounds ].size.height == HEIGHT_IPHONE_5)

আপনার বেস নিয়ামক:

- (void)viewDidLoad
{
    [super viewDidLoad];
    if (IS_IPHONE_5) {
        CGRect r = self.view.frame;
        r.size.height = HEIGHT_IPHONE_5 - 20;
        self.view.frame = r;
    }
    // now the view is stretched properly and not pushed to the bottom
    // it is pushed to the top instead...

    // other code goes here...
}

9

একটি constants.hফাইল আপনি এই সংজ্ঞায়িত বিবৃতি যোগ করতে পারেন:

 #define IS_IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad 
 #define IS_IPHONE UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone
 #define IS_WIDESCREEN (fabs((double)[[UIScreen mainScreen] bounds].size.height - (double)568) < DBL_EPSILON) 
 #define IS_IPHONE_5 (!IS_IPAD && IS_WIDESCREEN)

9

আপনার অ্যাপ্লিকেশনটি আইফোন 5 রেটিনা সমর্থন করতে পারে কিনা তা নির্ধারণ করতে: এটি প্রদর্শনের ধরণ, 4 এস রেটিনা ইত্যাদি ফেরত দেওয়া আরও শক্তিশালী হতে পারে, তবে নীচে যেমন লেখা আছে, আইফোন আইওএস 5 রেটিনাকে আইফোন হিসাবে সমর্থন করে তবেই এটি ফিরে আসে হ্যাঁ বা না)

একটি সাধারণ ".h" ফাইলটিতে যুক্ত করুন:

BOOL IS_IPHONE5_RETINA(void);

একটি সাধারণ ".m" ফাইলটিতে যুক্ত করুন:

BOOL IS_IPHONE5_RETINA(void) {
    BOOL isiPhone5Retina = NO;
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        if ([UIScreen mainScreen].scale == 2.0f) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);

            if(result.height == 960){
                //NSLog(@"iPhone 4, 4s Retina Resolution");
            }
            if(result.height == 1136){
                //NSLog(@"iPhone 5 Resolution");
                isiPhone5Retina = YES;
            }
        } else {
            //NSLog(@"iPhone Standard Resolution");
        }
    }
    return isiPhone5Retina;
}

8

প্রথমে দুটি xibs তৈরি করুন এবং সমস্ত প্রতিনিধি, প্রধান শ্রেণীর সাথে সংযুক্ত করুন xibএবং তারপরে আপনি আপনার appdelegate.mফাইলটিতে নীচে উল্লিখিত এই শর্তটি রাখতে পারেন

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

    if ([[UIScreen mainScreen] bounds].size.height == 568)
        {

        self.ViewController = [[ViewController alloc] initWithNibName:@"ViewControlleriphone5" bundle:nil];
        }

        else
        {
             self.ViewController = [[ViewController alloc] initWithNibName:@"ViewControlleriphone4" bundle:nil];

        }

এমনকি আপনি আপনার ViewControllerক্লাসেও আপনার প্রয়োজনীয়তার উপর নির্ভর করে প্রোগ্রামের যে কোনও জায়গায় এটি ব্যবহার করতে পারেন । সর্বাধিক গুরুত্বপূর্ণ বিষয়টি হল আপনি দুটি xibফাইল আলাদা আলাদা তৈরি করেছেনiphone 4(320*480) and iphone 5(320*568)


7

একটি একক ক্লাসে নীচের পদ্ধতিটি ব্যবহার করে দেখুন:

-(NSString *)typeOfDevice
    {
        if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
        {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            if(result.height == 480)
            {
                return @"Iphone";
            }
            if(result.height == 568)
            {
                return @"Iphone 5";
            }
        }
        else{
            return @"Ipad";;
        }


        return @"Iphone";
    }

7

আপনি Auto Layoutআইফোন 5 স্ক্রিন রেজোলিউশন ব্যবহার করে বৈশিষ্ট্যটি ব্যবহার করতে পারেন এবং নকশা তৈরি করতে পারেন এবং এটি 4 "এবং 3.5" উভয় ডিভাইসের জন্যই কাজ করবে তবে এই ক্ষেত্রে আপনার লেআউট ম্যানেজারের পর্যাপ্ত জ্ঞান থাকা উচিত।


এটি ডিভাইসগুলির পক্ষে কাজ করবে না যা iOS 6 সমর্থন করে না।
jonypz

7

সাথে চেক boundsকরা হচ্ছে568 আড়াআড়ি মোডে ব্যর্থ হবে। আইফোন 5 কেবল প্রতিকৃতি মোডে আরম্ভ করে তবে আপনি যদি ঘূর্ণন সমর্থন করতে চান তবে আইফোন 5 "চেক" এছাড়াও এই দৃশ্য পরিচালনা করতে হবে।

এখানে একটি ম্যাক্রো যা অরিয়েন্টেশন রাষ্ট্র পরিচালনা করে:

#define IS_IPHONE_5 (CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size, CGSizeMake(640, 1136)))

'পছন্দেরমড' কলটির ব্যবহারটি অন্য কয়েক ঘন্টা পোস্টিং থেকে এসেছে যা আমি কয়েক ঘন্টা আগে পড়েছিলাম তাই আমি এই ধারণাটি নিয়ে আসিনি।


6

প্রথমে এই চিত্রটি দেখান। সেই চিত্রটিতে আপনি রেটিনা 4 সমর্থনের জন্য সতর্কতা দেখান তাই এই সতর্কতার উপর ক্লিক করুন এবং অ্যাড ক্লিক করুন যাতে আপনার রেটিনা 4 স্প্ল্যাশ স্ক্রিনটি স্বয়ংক্রিয়ভাবে আপনার প্রকল্পে যুক্ত হয়।

এখানে চিত্র দেখান

এবং আপনি এই কোডটি ব্যবহার করার পরে:

if([[UIScreen mainScreen] bounds].size.height == 568)
    {
        // For iphone 5
    }
    else
    {
        // For iphone 4 or less
    }

6

আমি কোনও ডিভাইসের সাথে এ জাতীয় সমস্যার মুখোমুখি হইনি কারণ আমার কাছে কোনও হার্ডকডযুক্ত মান ছাড়াই সবার জন্য একটি কোডবেস ছিল। আমি যা করি তা হ'ল প্রতিটি ডিভাইসের জন্য একটির পরিবর্তে সর্বাধিক আকারের চিত্রটি resource উদাহরণস্বরূপ, আমার কাছে রেটিনা প্রদর্শনের জন্য একটি থাকবে এবং এটিকে দিক ফিট হিসাবে দেখানো হবে যাতে এটি প্রতিটি ডিভাইসে যেমন দেখা যায় তেমন হবে। বোতামের ফ্রেম সিদ্ধান্ত নিতে চলেছে, উদাহরণস্বরূপ, রান সময়। এর জন্য আমি পেটেন্ট ভিউয়ের% মান ব্যবহার করি, উদাহরণস্বরূপ, যদি আমি প্রস্থের পিতাম দর্শনের অর্ধেক হতে চাই তবে পিতামাতার 50% নিতে হবে এবং এটি উচ্চতা এবং কেন্দ্রের জন্য প্রযোজ্য।

এটির সাথে আমার এমনকি xibs দরকার নেই।


5

আপনি পর্দার আকারের উপর ভিত্তি করে আইফোন 5 ব্যবহার করছেন কিনা তা গণনা করতে আপনি এই সংজ্ঞাটি ব্যবহার করতে পারেন:

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

তারপরে একটি সাধারণ ifবিবৃতি ব্যবহার করুন :

    if (IS_IPHONE_5) {

    // What ever changes
    }

4

পিটার, আপনার সত্যিই কানাপ্পির দিকে নজর দেওয়া উচিত, এটি আপনার জন্য সমস্ত কিছুই করে, আপনার যা করতে হবে তা লেআউটটি নির্দিষ্ট করে যেমন:

button mySubmitButton 'Sumbit' (100,100,100,30 + 0,88,0,0) { ... }

সেখান থেকে কানাপ্পি সঠিক উদ্দেশ্য-সি কোড তৈরি করবে যা অ্যাপটি চলছে এবং যে ডিভাইসটি চলছে তা সনাক্ত করে এবং এটি ব্যবহার করবে:

(100,100,100,30) for iPhone4
(100,**188**,100,30) for iPhone 5

কানাপ্পি ইন্টারফেস বিল্ডার এবং স্টোরি বোর্ডের মিলিত মতো কাজ করে, এটি পাঠ্য আকারে বাদে। আপনার যদি ইতিমধ্যে XIB ফাইল থাকে তবে আপনি সেগুলিকে রূপান্তর করতে পারেন যাতে আপনাকে পুরো ইউআইটি শুরু থেকে পুনরায় তৈরি করতে হবে না।


অনেকটা মেটা ধন্যবাদ, আমি এটি একবার দেখে নেব তবে আমি একটি খুব নতুন প্রোগ্রামার এবং সত্যিই কীভাবে ক্লিন অবজেক্টিভ-সি-তে এটি পরিচালনা করতে হবে তা শিখতে চাই।
পিটারকে

4

আপনি কোন ডিভাইসে আছেন তা নির্ধারণ করতে আপনি ম্যানুয়ালি স্ক্রিনের আকারটি পরীক্ষা করতে পারেন:

#define DEVICE_IS_IPHONE5 ([[UIScreen mainScreen] bounds].size.height == 568)

float height = DEVICE_IS_IPHONE5?568:480;
if (height == 568) {
    // 4"

} else {

    // 3"

}

3

আপনি এই কোডটি যুক্ত করতে পারেন:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);

            if(result.height == 960) {
                NSLog(@"iPhone 4 Resolution");
            }
            if(result.height == 1136) {
              NSLog(@"iPhone 5 Resolution");
            }
        }
        else{
            NSLog(@"Standard Resolution");
        }
    }

2
এটি আসলে কিছুটা ভুল। আইওএস 4.0.০ বা তার পরে চলমান যে কোনও আইফোন scaleনির্বাচনকারীকে প্রতিক্রিয়া জানাবে UIScreenএবং আপনার "স্ট্যান্ডার্ড রেজোলিউশন" কোডটি কার্যকর হয় না এমন ক্ষেত্রে আপনার একটি মামলা থাকবে।
ফিলিপ রেডেলিক

3

এটি একটি আসল সর্বজনীন কোড, আপনি 3 টি ভিন্ন স্টোরি বোর্ড তৈরি করতে পারেন:

আপনার প্রকল্প ইউনিভার্সাল মোড সেট করুন এবং আইফোন 5 স্টোরিবোর্ড এবং আইপ্যাড টার্গেট স্টোরিবোর্ড সহ আইপ্যাড প্রধান সহ আপনার মূল গল্প আইফোন সেট করুন, এখন আইফোনের জন্য নতুন স্টোরিবোর্ড লক্ষ্য যুক্ত করুন এবং আইফোন 4 এস এর জন্য রেজোলিউশন সংশোধন করুন বা আপনার অ্যাপডেলিগেট.এম বাস্তবায়ন করুন now

iPhone4 / 4S জন্য এক (3 / 3GS জন্য একই) iPhone5 এবং প্রকল্প করতে সার্বজনীন করার জন্য, iPad এর জন্য একটি নতুন স্টোরিবোর্ড লক্ষ্য সঙ্গে, এখন AppDelegate.m অধীনে didFinishLaunchingএই কোড যোগ করুন:

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        UIStoryboard *storyBoard;

        CGSize result = [[UIScreen mainScreen] bounds].size;
        CGFloat scale = [UIScreen mainScreen].scale;
        result = CGSizeMake(result.width *scale, result.height *scale);

//----------------HERE WE SETUP FOR IPHONE4/4s/iPod----------------------

        if(result.height == 960){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }

//----------------HERE WE SETUP FOR IPHONE3/3s/iPod----------------------

        if(result.height == 480){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }
    }

        return YES;
 }

সুতরাং আপনি আইফোন 3/3 জি / 4/4 এস / 5 সমস্ত আইপড এবং সমস্ত ধরণের আইপ্যাডের জন্য একটি ইউনিভার্সাল অ্যাপ তৈরি করেছেন

সমস্ত আইএমজি myImage.pngএবং এর সাথে সংহত করার কথা মনে রাখবেনmyImage@2x.png


2

আমার মতে এই জাতীয় সমস্যাগুলির সাথে মোকাবিলা করার এবং ডিভাইসের উচ্চতা যাচাইয়ের জন্য প্রয়োজনীয় কয়েকটি শর্ত পরিহার করার সর্বোত্তম উপায়টি দর্শনগুলির জন্য আপেক্ষিক ফ্রেম বা কোনও ইউআই উপাদান যা আপনি আপনার সাথে যুক্ত করছেন তা ব্যবহার করছে উদাহরণস্বরূপ: আপনি যদি যুক্ত করছেন তবে কিছু ইউআই উপাদান যা আপনি চান তার নীচের অংশে বা ট্যাব বারের ঠিক ওপরে হওয়া উচিত তবে আপনার ভিউটির উচ্চতা বা ট্যাব বারের (যদি উপস্থিত থাকে) সম্মানের সাথে আপনার উত্স গ্রহণ করা উচিত এবং আমাদের পাশাপাশি স্বয়ংক্রিয়ভাবে পুনরায় আকার দেওয়ার বৈশিষ্ট্যও রয়েছে। আমি আশা করি এটি আপনার পক্ষে কাজ করবে


1

শর্তাবলীর একটি সেট ব্যবহার না করে আপনি পর্দার আকার ব্যবহার করে নিজের দর্শনটি স্বয়ংক্রিয়ভাবে আকার দিতে পারেন।

int h = [[UIScreen mainScreen] bounds].size.height;
int w = [[UIScreen mainScreen] bounds].size.width;
self.imageView.frame = CGRectMake(20, 80, (h-200), (w-100));

আমার ক্ষেত্রে আমি এমন একটি দৃশ্য চাই যা শীর্ষে কিছু ইনপুট ক্ষেত্র এবং নীচে কিছু বোতামের মধ্যে স্থান পূরণ করে, তাই উপরের বাম কোণটি স্থির করে এবং পর্দার আকারের উপর ভিত্তি করে ভেরিয়েবল নীচের ডানদিকে। আমার অ্যাপ্লিকেশনটি ক্যামেরায় তোলা ছবির সাথে চিত্রের ভিউ পূরণ করে যাতে আমি যে সমস্ত স্থান পেতে পারি তা চাই।


1

আপনার যদি ইতিমধ্যে বিদ্যমান একটি অ্যাপ্লিকেশনটিকে সর্বজনীনতে রূপান্তর করতে হয় তবে আপনার সাথে সম্পর্কিত xib ফাইল নির্বাচন করতে হবে -> ইউটিলিটিগুলি প্রদর্শন করুন> আকার আকার পরিদর্শক দেখান।

আকার পরিদর্শকটিতে আপনি অটোসাইজিং দেখতে পাবেন, এই সরঞ্জামটি ব্যবহার করে আপনি বিদ্যমান আইওএস অ্যাপে রূপান্তর করতে পারেন।


0

এক্সকোড 5 ব্যবহার করে, প্রকল্প> জেনারেলের "সম্পত্তির তালিকাতে স্থানান্তর করুন" নির্বাচন করুন।

তারপরে আপনার লঞ্চ চিত্রটি অনুসন্ধান করতে "অনুসন্ধানে দেখান" ব্যবহার করুন, আপনি এটি 640x1136 বলে ডামি-এডিট করতে পারেন, তারপরে নীচের চিত্রটিতে দেখানো হিসাবে এটি সম্পদ ক্যাটালগ এ টেনে আনুন।

আইওএস 7 এবং আইওএস 6 আর 4 বিভাগে একটি চিত্র রয়েছে যা 640x1136। পরের বার আপনি অ্যাপটি চালু করবেন, কালো বারগুলি অদৃশ্য হয়ে যাবে এবং আপনার অ্যাপ্লিকেশনটি 4 ইঞ্চি স্ক্রিন ব্যবহার করবে

এখানে চিত্র বর্ণনা লিখুন


0

মূল্য বিজ্ঞপ্তি - নতুন এক্সকোডে আপনাকে এই ইমেজ ফাইলটি ডিফল্ট 568h@2x.png সম্পত্তিতে যুক্ত করতে হবে


0

ব্যবহার Auto Layoutদর্শনগুলির জন্য বৈশিষ্ট্যটি । এটি সমস্ত রেজোলিউশনে স্বয়ংক্রিয়ভাবে সামঞ্জস্য করবে।

আইফোন বা ~ আইপ্যাড প্রত্যয় সহ একটি নিয়ামক নামক একটি নিয়ামকের জন্য দুটি xibs তৈরি করুন। সংকলনের সময়, এক্সকোডটি ডিভাইসের উপর ভিত্তি করে সঠিক xib নেবে।

আইফোন এবং আইপ্যাডের জন্য দৃশ্যটি পোর্ট করার পক্ষে যথেষ্ট সহজ হলে, আপনি যদি আইফোন এবং আইপ্যাড উভয়ের জন্য একক এক্সব তৈরি করতে চান তবে আকারের ক্লাসগুলি ব্যবহার করুন।


0

আইওএস ডিভাইস এবং আইওএস সিমুলেটর উভয়ই পরীক্ষা করার সময় কিছুটা সমস্যা আছে। এটি উপস্থিত হয় যে সিমুলেটর (এক্সকোড 6.0.1) প্রস্থ এবং উচ্চতার জন্য স্যুইচ করা মান দেয়[[UIScreen mainScreen] bounds].size কোনও ডিভাইসের অরিয়েন্টেশনের উপর নির্ভর করে ।

সুতরাং সঠিক শারীরিক স্ক্রিনের আকার নির্ধারণ করার সময় এটি কোনও সমস্যা হতে পারে। এই কোডটি সমস্ত 2014 কে আলাদা করতে সহায়তা করে iPhone আইফোন মডেল প্রজন্ম:

  • আইফোন 4 এস
  • আইফোন 5 (এবং আইফোন 5 গুলি)
  • আইফোন 6 (এবং আইফোন 6 +)

আইফোন 6 + থেকে আইফোন 6 এর মধ্যে পার্থক্য তৈরি করতে এটি সহজেই পরিবর্তন করা যেতে পারে।

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;

    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone)
    {
        if (iOSDeviceScreenSize.width > 568 || // for iOS devices
            iOSDeviceScreenSize.height > 568) // for iOS simulator
        {   // iPhone 6 and iPhone 6+

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone6
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone6" bundle:nil];

            NSLog(@"loaded iPhone6 Storyboard");
        }
        else if (iOSDeviceScreenSize.width == 568 || // for iOS devices
                 iOSDeviceScreenSize.height == 568) // for iOS simulator
        {   // iPhone 5 and iPod Touch 5th generation: 4 inch screen (diagonally measured)

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone5
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone5" bundle:nil];

            NSLog(@"loaded iPhone5 Storyboard");
        }
        else
        {   // iPhone 3GS, 4, and 4S and iPod Touch 3rd and 4th generation: 3.5 inch screen (diagonally measured)

                // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone4
            storyboard = [UIStoryboard story    boardWithName:@"MainStoryboard_iPhone" bundle:nil];

                NSLog(@"loaded iPhone4 Storyboard");
        }
    }
    else if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)
    {   // The iOS device = iPad

        storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPadnew" bundle:nil];

        NSLog(@"loaded iPad Storyboard");
    }

    // rest my code
}

0

আমি আপনার ইউআই ইন্টারফেস অনুযায়ী আপনার অ্যাপ্লিকেশনগুলিতে অটোরাইজিং মাস্ক ব্যবহার করার পরামর্শ দেব, এটি প্রচুর ঝামেলা বাঁচায় এবং আইফোন 4 এবং 5 স্ক্রিনের জন্য বিভিন্ন ইউআই তৈরির চেয়ে ভাল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.