ios - যবহ - এপেল ফোন




কিভাবে আইফোন 5 স্ক্রিন রেজল্যুশন জন্য অ্যাপ্লিকেশন বিকাশ বা স্থানান্তর? (20)

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

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

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

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


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

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

  • আইফোন 4S
  • আইফোন 5 (এবং আইফোন 5s)
  • আইফোন 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
}

অ্যাপ্লিকেশন সংস্থানে "[email protected]" নামের একটি লঞ্চ চিত্র যোগ করা এবং সাধারণ ক্ষেত্রে (যদি আপনি ভাগ্যবান হন তবে) অ্যাপ্লিকেশনটি সঠিকভাবে কাজ করবে।

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

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

আইওএস মাইগ্রেট করার সময় স্ক্রিন সাইজের সাথে সম্পর্কিত অন্যান্য সমস্যা নেই 6. বিস্তারিত জানার জন্য iOS 6.0 রিলিজ নোট পড়ুন।


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

একটি সাধারণ "। এইচ" ফাইল যোগ করুন:

BOOL IS_IPHONE5_RETINA(void);

একটি সাধারণ "। এম" ফাইল যোগ করুন:

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;
}

আপনি এই কোড যোগ করতে পারে:

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");
        }
    }

আপনি কোন ডিভাইসটিতে আছেন তা নির্ধারণ করতে আপনি স্ক্রীন আকারটি নিজে নিজে পরীক্ষা করতে পারেন:

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

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

} else {

    // 3"

}

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


আমি here এই সমস্যা সমাধান। শুধু ইমেজ ~ 568h @ 2x suffix যোগ করুন এবং ~ 568h xib এর যাও। কোন রানটাইম চেক বা কোড পরিবর্তন প্রয়োজন।


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

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


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

কোথাও 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...
}

একটি 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)

একটি এককন্টন ক্লাসে নীচের পদ্ধতিটি চেষ্টা করুন:

-(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";
    }

এখানে আপনি একটি চমৎকার টিউটোরিয়াল খুঁজে পেতে পারেন (MonoTouch এর জন্য, তবে আপনি অ-মোনোটোচ-প্রোজেক্টগুলির জন্যও তথ্যটি ব্যবহার করতে পারেন):
http://redth.info/get-your-monotouch-apps-ready-for-iphone-5-ios-6-today/

  1. " [email protected] " নামের সাথে আপনার স্প্ল্যাশ / ডিফল্ট স্ক্রীনের জন্য একটি নতুন চিত্র তৈরি করুন ( 640 x 1136 পিক্সেল )

  2. IOS সিমুলেটারে , হার্ডওয়্যার -> ডিভাইস মেনুতে যান এবং " আইফোন (রেটিনা 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 = "[email protected]";
public static UIImage FromBundle16x9(string path)
{
    //adopt the [email protected] 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());
    }
}

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

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

আইফোন didFinishLaunching ( didFinishLaunching জন্য একই) আইফোন 5 এর জন্য এক এবং আইপ্যাডের জন্য নতুন স্টোরিবোর্ডের টার্গেটের সাথে প্রকল্পটি সার্বজনীন করে didFinishLaunching , এখন didFinishLaunching এই 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 এবং [email protected] সাথে সব IMG সংহত করতে মনে রাখবেন


পয়েন্ট মূল্য বিজ্ঞপ্তি - নতুন এক্সকোডটিতে আপনাকে এই ছবি ফাইলটি ডিফল্ট [email protected] সম্পদের যোগ করতে হবে


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

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 ফাইল থাকে তবে আপনি তাদের রূপান্তর করতে পারেন যাতে আপনার স্ক্র্যাচ থেকে সম্পূর্ণ UI পুনরায় তৈরি করতে হয় না।


প্রথমে এই ছবিটি দেখান। এই ছবিতে আপনি রেটিনা 4 সমর্থনের জন্য সতর্কতা দেখান যাতে এই সতর্কবার্তাটি ক্লিক করুন এবং আপনার র্যাটিনা 4 স্প্ল্যাশ স্ক্রীন স্বয়ংক্রিয়ভাবে আপনার প্রোজেক্টে যোগ করা যোগ করুন এ ক্লিক করুন।

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

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

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

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

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


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

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

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


568 সঙ্গে 568 চেক আড়াআড়ি মোডে ব্যর্থ হবে। আইফোন 5 শুধুমাত্র পটেট মোডে প্রবর্তন করে তবে আপনি ঘূর্ণন সমর্থন করতে চান তবে আইফোন 5 "চেক" এর পাশাপাশি এই দৃশ্যকল্পটি পরিচালনা করতে হবে।

এখানে একটি ম্যাক্রো যা অভিযোজন অবস্থা পরিচালনা করে:

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

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







iphone-5