[ইউআইস্ক্রিন মেনস্ক্রিন] .বাউন্ডস.স আইওএস 8-এ ওরিয়েন্টেশন-নির্ভর হয়ে উঠছে?


184

আমি iOS 7 এবং iOS 8 উভয়টিতে নিম্নলিখিত কোডটি চালিত করেছি:

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
BOOL landscape = (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight);
NSLog(@"Currently landscape: %@, width: %.2f, height: %.2f", 
      (landscape ? @"Yes" : @"No"), 
      [[UIScreen mainScreen] bounds].size.width, 
      [[UIScreen mainScreen] bounds].size.height);

নিম্নলিখিত আইওএস 8 এর ফলাফল:

Currently landscape: No, width: 320.00, height: 568.00
Currently landscape: Yes, width: 568.00, height: 320.00

আইওএস 7 এর ফলাফলের সাথে তুলনা করা:

Currently landscape: No, width: 320.00, height: 568.00
Currently landscape: Yes, width: 320.00, height: 568.00

এই পরিবর্তন উল্লেখ করে কোন ডকুমেন্টেশন আছে? বা এটি আইওএস 8 এপিআই-তে একটি অস্থায়ী বাগ?


13
ওয়েল, iOS8 আউটপুটটি আরও অনেক যুক্তিযুক্ত বলে মনে হচ্ছে
লেভি

উত্তর:


173

হ্যাঁ, এটি আইওএস 8-এ নির্ভর করবে, কোনও বাগ নয়। আপনি আরও তথ্যের জন্য ডাব্লুডাব্লুডিসি 2014 থেকে 214 সেশনটি পর্যালোচনা করতে পারেন: "আইওএস 8 এ কন্ট্রোলার অগ্রগতি দেখুন"

উপস্থাপনা থেকে উদ্ধৃতি:

ইউআইএস স্ক্রিনটি এখন ইন্টারফেস ভিত্তিক:

  • [ইউআইএস স্ক্রিন সীমা] এখন ইন্টারফেস ভিত্তিক
  • [ইউআইএস স্ক্রিন অ্যাপ্লিকেশন ফ্রেম] এখন ইন্টারফেস ভিত্তিক
  • স্ট্যাটাস বারের ফ্রেম বিজ্ঞপ্তিগুলি ইন্টারফেস-ওরিয়েন্টেড
  • কীবোর্ড ফ্রেম বিজ্ঞপ্তিগুলি ইন্টারফেস-ভিত্তিক

7
উপরে উল্লিখিত ডাব্লুডাব্লুডিসি বক্তৃতায়, ইন্টারফেসমুখী অংশটি 51:50 থেকে শুরু হয়।
cnotethegr8

2
আমি আজকের বেশিরভাগ সময় এই অগ্রগতিটি ঘিরে কাজ করার চেষ্টা করে কাটিয়েছি। স্পষ্টতই এটি সর্বদা ঘটে না , সুতরাং আপনি যদি এমন কোনও এসডিকে বিকাশকারী হন যা অন্যান্য অ্যাপ্লিকেশনগুলিতে কাজ করা প্রয়োজন তবে এই জিনিসটি আরও জটিল হয়ে উঠল।
গ্লেন মেইনার্ড

1
@ আরথ আপনি কিছু পুরানো অভ্যাস ব্রেক না করে নতুনত্ব আনতে পারবেন না।
বোরিস ওয়াই।

23
@ বরিসি - আমি শ্রদ্ধার সাথে একমত নই। পিছনে সামঞ্জস্যতা সংরক্ষণ করার সময় বেশিরভাগ ক্ষেত্রে এটি উদ্ভাবন করা সম্ভব। আমার মতে, ব্রেকিং অন্য যে কোনও কিছুর চেয়ে অলসতার স্মাক পরিবর্তন করে। তারা চায় অন্য সবাই কাজটি করুক।
অ্যারোথ

1
এই উত্তরটি আরও বেশি সহায়ক হবে যদি এটি ব্যাখ্যা করা হয় যে ইন্টারফেস ভিত্তিক আসলে কী বোঝায়। আমি ভুল হতে পারি, তবে আমি মনে করি যে ওরিয়েন্টেশন নির্ভরতা কেবলমাত্র নিয়ামকগুলি দেখার সাথে সম্পর্কিত। যদি আপনি অন্য কোনও ক্লাস নেন এবং সীমানা গণনা করেন তবে সেগুলি এখনও পুরানো স্টাইল অনুসারে, সর্বদা প্রতিকৃতি।
ম্যাক্সি মুস

59

হ্যাঁ, এটি আইওএস 8-এ নির্ভর করবে।

ওএস এর পুরানো সংস্করণ সমর্থন করা প্রয়োজন এমন অ্যাপ্লিকেশনগুলির জন্য এই সমস্যাটি সমাধান করার জন্য আমি একটি ইউটিলিটি পদ্ধতি লিখেছিলাম।

+ (CGSize)screenSize {
    CGSize screenSize = [UIScreen mainScreen].bounds.size;
    if ((NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_7_1) && UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {
        return CGSizeMake(screenSize.height, screenSize.width);
    }
    return screenSize;
}

1
আমি কোডটি সম্পাদনা করে দয়া করে চেক করুন, ওএস সংস্করণ চেক করার জন্য আপনার শর্তটি ভুল ছিল
জাগেন

@ জেজেন দয়া করে পরিষ্কার করুন, সংস্করণ চেকটি আমার পক্ষে কাজ করে। সমস্যাটা কি?
সিবারটেল

আমি যা বুঝতে পেরেছি তা হল, ওএস আইওএস 8 এবং ওরিয়েন্টেশন ল্যান্ডস্কেপ হলে আমাদের উচ্চতা এবং প্রস্থ পরিবর্তন করা দরকার, আমি কি ঠিক আছি?
জাগেন

@ জাগেন নেতিবাচক, আইওএস 8-এ পদ্ধতিটি অরিয়েন্টেশন-নির্ভর। আপনার যুক্তি পরিবর্তন করা হয়। আপনার সম্পাদনাটি সঠিকভাবে প্রত্যাখ্যান করা হয়েছিল।
সিবারটেল

@ কেবারটেল এটিকে ইউআইএস স্ক্রিনে শ্রেণিবদ্ধ করার একটি উপায় আছে যাতে আমাদের [ইউআইস স্ক্রিন মেইনস্ক্রিন] .bounds.size এ আমাদের মূল কলটি আইওএস 7 এবং আইওএস 8 উভয়ের জন্যই কাজ করতে পারে?
কেভিনল

34

হ্যাঁ, প্রকৃতপক্ষে, স্ক্রিনের আকারটি এখন আইওএস 8 এর উপর নির্ভর করে ient আমি এখানে এটি কিভাবে।

+ (CGRect)screenBoundsFixedToPortraitOrientation {
    UIScreen *screen = [UIScreen mainScreen];

    if ([screen respondsToSelector:@selector(fixedCoordinateSpace)]) {
                    return [screen.coordinateSpace convertRect:screen.bounds toCoordinateSpace:screen.fixedCoordinateSpace];
    } 
    return screen.bounds;
}

2
আমি খুঁজে পাচ্ছি যে এটি নিয়মিত আইফোন অ্যাপ্লিকেশনগুলির সাথে সমস্যার সমাধান করে তবে আইপ্যাডে চলমান আইফোন অ্যাপ্লিকেশনগুলির সাথে নয়।
টমাস ডাব্লু

32

হ্যাঁ, এটি এখন ওরিয়েন্টেশনের উপর নির্ভরশীল।

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

+(CGSize)screenSizeOrientationIndependent {
     CGSize screenSize = [UIScreen mainScreen].bounds.size;
     return CGSizeMake(MIN(screenSize.width, screenSize.height), MAX(screenSize.width, screenSize.height));
}

সম্ভবত অ্যাপল টিভির মতো কিছুতে কাজ করবে না, যেখানে এটি (প্রায়) লম্বা থেকে সর্বদা প্রশস্ত।
সিবিএইচ 2000

11

এটি আমার সমস্যার সমাধান করার সাথে সাথে এই প্রশ্নের সাথে সম্পর্কিত, এখানে স্ক্রিনের প্রস্থ এবং উচ্চতার গণনার জন্য আমি দুটি ব্যবহার করি:

#define SCREEN_WIDTH (IOS_VERSION_LOWER_THAN_8 ? (UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation) ? [[UIScreen mainScreen] bounds].size.width : [[UIScreen mainScreen] bounds].size.height) : [[UIScreen mainScreen] bounds].size.width)

#define SCREEN_HEIGHT (IOS_VERSION_LOWER_THAN_8 ? (UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation) ? [[UIScreen mainScreen] bounds].size.height : [[UIScreen mainScreen] bounds].size.width) : [[UIScreen mainScreen] bounds].size.height)

#define IOS_VERSION_LOWER_THAN_8 (NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_7_1)

আপনি যদি আইওএস 7 এবং আইওএস 8 উভয়কে সমর্থন করছেন তবে এটি এই সমস্যার জন্য সেরা সমাধান।


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

9

আপনি nativeBounds(ওরিয়েন্টেশন-স্বতন্ত্র) ব্যবহার করতে পারেন

nativeBounds

দৈহিক পর্দার সীমানা আয়তক্ষেত্র, পিক্সেলগুলিতে পরিমাপ করা। (শুধুমাত্র পাঠযোগ্য)

ঘোষণা সুইফট

  var nativeBounds: CGRect { get }

এই আয়তক্ষেত্রটি পোর্ট্রেট-আপ অভিযোজনে ডিভাইসের উপর ভিত্তি করে। ডিভাইসটি ঘোরার সাথে সাথে এই মানটি পরিবর্তন হয় না।

ডিভাইসের উচ্চতা সনাক্ত করা:

if UIScreen.mainScreen().nativeBounds.height == 960.0 {

}

ডিভাইসের প্রস্থ সনাক্তকরণ:

if UIScreen.mainScreen().nativeBounds.width == 640.0 {

}

3
সচেতন হন যে এই পদ্ধতিটি পিক্সেলগুলি ফেরত দেয়, অন্যদিকে বেশিরভাগ পদ্ধতি পয়েন্টগুলি নিয়ে কাজ করে। খুব আলাদা জিনিস।
jcsahnwaldt মনিকা

1
আমার ক্ষেত্রে ঠিক আমার যা প্রয়োজন ছিল :) (ওপেনজিএল বা অন্যান্য ভিউগুলি ইউআইভিউ-র উপর ভিত্তি করে নয় তবে যেখানে সঠিক পিক্সেল মাত্রা আমার জানা দরকার)
বের্সেলোর

3
সতর্কতা: আইফোন 6+ এ এটি ফিরে এসেছে 1080 x 1920 যা আপনি যা চান তা নাও হতে পারে
চ্যানন

8

এটি আইওএস 8 এসডিকে কোনও বাগ নয়। তারা সীমানা ইন্টারফেস ওরিয়েন্টেশন নির্ভর করে তোলে। কিছু তথ্যসূত্র বা ডকুমেন্টেশন সম্পর্কে আপনার প্রশ্নের তথ্য অনুসারে আমি আপনাকে ডাব্লুডাব্লুডিসি ২০১৪View Controller Advancements in iOS 8 থেকে ২১৪ সেশন এটি দেখার জন্য অত্যন্ত সুপারিশ করব । সর্বাধিক আকর্ষণীয় অংশ (আপনার সন্দেহ অনুসারে) যা 50:45 এ শুরু হয়।Screen Coordinates


5

হ্যাঁ, এটি আইওএস 8-এ নির্ভর করবে।

এসডিকে এবং ওএস-সংস্করণ জুড়ে আপনার কোনও আইওএস 8 ফ্যাশনে সীমান্ত পড়ার একটানা উপায় থাকতে পারে তা এখানে's

#ifndef NSFoundationVersionNumber_iOS_7_1
# define NSFoundationVersionNumber_iOS_7_1 1047.25
#endif

@implementation UIScreen (Legacy)

// iOS 8 way of returning bounds for all SDK's and OS-versions
- (CGRect)boundsRotatedWithStatusBar
{
    static BOOL isNotRotatedBySystem;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        BOOL OSIsBelowIOS8 = [[[UIDevice currentDevice] systemVersion] floatValue] < 8.0;
        BOOL SDKIsBelowIOS8 = floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1;
        isNotRotatedBySystem = OSIsBelowIOS8 || SDKIsBelowIOS8;
    });

    BOOL needsToRotate = isNotRotatedBySystem && UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation);
    if(needsToRotate)
    {
        CGRect screenBounds = [self bounds];
        CGRect bounds = screenBounds;
        bounds.size.width = screenBounds.size.height;
        bounds.size.height = screenBounds.size.width;
        return bounds;
    }
    else
    {
        return [self bounds];
    }
}

@end

1
এসডিকে সংস্করণটিও পরীক্ষা করা আপনার সহকারীরা এসডিকে বিভিন্ন সংস্করণ দিয়ে (যদিও এটি হওয়া উচিত নয়!) আপনার অ্যাপটি তৈরি করা ক্ষেত্রে একটি ভাল পরামর্শ।
ক্রেগ ম্যাকমাহন

4

আমার সমাধান ম্যাক্সকে এবং এইচফসিলির সংমিশ্রণ। আমি ইউআইএস স্ক্রিনের বিভাগে এই পদ্ধতিটি তৈরি করেছি এবং এর কোনও সংস্করণ চেক নেই (যা একটি খারাপ অভ্যাস):

//Always return the iOS8 way - i.e. height is the real orientation dependent height
+ (CGRect)screenBoundsOrientationDependent {
    UIScreen *screen = [UIScreen mainScreen];
    CGRect screenRect;
    if (![screen respondsToSelector:@selector(fixedCoordinateSpace)] && UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {
        screenRect = CGRectMake(screen.bounds.origin.x, screen.bounds.origin.y, screen.bounds.size.height, screen.bounds.size.width);
    } else {
        screenRect = screen.bounds;
    }

    return screenRect;
}

3

আমার একটি দ্রুত সহায়ক সাহায্যকারী ফাংশন দরকার ছিল যা আইওএস 8 এর অধীনে আইওএস 7 এর মতো আচরণ রাখে - এটি আমাকে আমার [[UIScreen mainScreen] bounds]কলগুলি সরিয়ে নিতে এবং অন্য কোডগুলিকে স্পর্শ না করার অনুমতি দেয় ...

+ (CGRect)iOS7StyleScreenBounds {
    CGRect bounds = [UIScreen mainScreen].bounds;
    if (([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) && UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {
        bounds.size = CGSizeMake(bounds.size.height, bounds.size.width);
    }
        return bounds;
}

বাজে, তবে সময় মতো কাজ ঠিক করে ফেলা ঠিকঠাক করে দেওয়া যায় :-)
ডুনগেট

3

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

- (CGRect)boundsForOrientation:(UIInterfaceOrientation)orientation {

    CGFloat width   = [[UIScreen mainScreen] bounds].size.width;
    CGFloat height  = [[UIScreen mainScreen] bounds].size.height;

    CGRect bounds = CGRectZero;

    if (UIInterfaceOrientationIsLandscape(orientation)) {
        bounds.size = CGSizeMake(MAX(width, height), MIN(width, height));
    } else {
        bounds.size = CGSizeMake(MIN(width, height), MAX(width, height));
    }

    return bounds;
}

// For the below example, bounds will have the same value if you run the code on iOS 8.x or below versions.
CGRect bounds = [self boundsForOrientation:UIInterfaceOrientationPortrait]; 

1

আমি সঠিক রেক্টটি গণনা করার জন্য যা ব্যবহার করি তা:

UIScreen* const mainScreen = [UIScreen mainScreen];
CGRect rect = [mainScreen bounds];
#ifdef __IPHONE_8_0
if ([mainScreen respondsToSelector:@selector(coordinateSpace)])
{
    if ([mainScreen respondsToSelector:@selector(fixedCoordinateSpace)])
    {
        id tmpCoordSpace = [mainScreen coordinateSpace];
        id tmpFixedCoordSpace = [mainScreen fixedCoordinateSpace];

        if ([tmpCoordSpace respondsToSelector:@selector(convertRect:toCoordinateSpace:)])
        {
            rect = [tmpCoordSpace convertRect:rect toCoordinateSpace: tmpFixedCoordSpace];
        }
    }
}
#endif

1

উপরে বর্ণিত একটি চমত্কার সিবারটেল ফাংশনের স্যুইফ্ট সংস্করণ যুক্ত করুন।

func screenSize() -> CGSize {
    let screenSize = UIScreen.mainScreen().bounds.size
    if (NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_7_1) && UIInterfaceOrientationIsLandscape(UIApplication.sharedApplication().statusBarOrientation) {
        return CGSizeMake(screenSize.height, screenSize.width)
    }
    return screenSize
}

1

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

[[UIApplication sharedApplication] setStatusBarHidden:NO];

[self.view setFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height)];

[appDel.window setFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height)];

এবং আমার জন্য এটির কাজটি এটি চেষ্টা করে।


1

আইওএস 8 বা উচ্চতর

যারা পয়েন্টগুলির মধ্যে পর্দার আকার জানতে চান তাদের জন্য একটি সমাধান (3.5 ইঞ্চি স্ক্রিনের 320 × 480 পয়েন্ট রয়েছে, inches.০ ইঞ্চি স্ক্রিনের 320 × 568 পয়েন্ট ইত্যাদি রয়েছে)

- (CGSize)screenSizeInPoints
{
    CGFloat width = [[UIScreen mainScreen] bounds].size.width;
    CGFloat height = [[UIScreen mainScreen] bounds].size.height;

    if (width > height) {
        return CGSizeMake(height, width);
    }
    else {
        return [[UIScreen mainScreen] bounds].size;
    }
}

0

একটা জিনিষ যে আমি লক্ষনীয় হল অর্ডার Info.plist সমর্থিত ইন্টারফেস ওরিয়েন্টেশন এর ব্যাপার। আমি আমার অ্যাপ্লিকেশনটির সাথে এই প্রশ্নের সমস্যা পেয়েছি (এটি কোডে ওরিয়েন্টেশন করে) তবে আমি কোথাও উল্লেখ করতে পারি নি যে ডিফল্ট ওরিয়েন্টেশনটি প্রতিকৃতি।

আমি ভেবেছিলাম যে কোনও ক্ষেত্রেই ডিফল্ট ওরিয়েন্টেশনটি প্রতিকৃতি ছিল

তথ্য.পালিস্টে পুনরায় সাজানো, পোর্ট্রেটকে প্রথমে রেখে, প্রত্যাশিত আচরণটি পুনরুদ্ধার করা।


0

এটি iOS7 এবং iOS8 উভয়টিতে সঠিক ডিভাইস দেবে ,

#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define IS_PORTRAIT         UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation)

+ (BOOL)isIPHONE4{

// < iOS 8.0
if(SYSTEM_VERSION_LESS_THAN(@"8.0")){

        if ([self getDeviceWidth] == 320.0 && [self getDeviceHeight] == 480.0) {
            return YES;
        } else {
            return NO;
        }

// >= iOS 8.0
}else{

    if(IS_PORTRAIT){

        if ([self getDeviceWidth] == 320.0 && [self getDeviceHeight] == 480.0) {
            return YES;
        } else {
            return NO;
        }

    }else{

        if ([self getDeviceWidth] == 480.0 && [self getDeviceHeight] == 320.0) {
            return YES;
        } else {
            return NO;
        }

    }

}


}

+ (BOOL)isIPHONE5{


// < iOS 8.0
if(SYSTEM_VERSION_LESS_THAN(@"8.0")){

    if ([self getDeviceWidth] == 320.0 && [self getDeviceHeight] == 568.0) {
        return YES;
    } else {
        return NO;
    }

    // >= iOS 8.0
}else{

    if(IS_PORTRAIT){

        if ([self getDeviceWidth] == 320.0 && [self getDeviceHeight] == 568.0) {
            return YES;
        } else {
            return NO;
        }

    }else{

        if ([self getDeviceWidth] == 568.0 && [self getDeviceHeight] == 320.0) {
            return YES;
        } else {
            return NO;
        }

    }

}

}

+ (BOOL)isIPHONE6{

// < iOS 8.0
if(SYSTEM_VERSION_LESS_THAN(@"8.0")){

    if ([self getDeviceWidth] == 375.0 && [self getDeviceHeight] == 667.0) {
        return YES;
    } else {
        return NO;
    }

    // >= iOS 8.0
}else{

    if(IS_PORTRAIT){

        if ([self getDeviceWidth] == 375.0 && [self getDeviceHeight] == 667.0) {
            return YES;
        } else {
            return NO;
        }

    }else{

        if ([self getDeviceWidth] == 667.0 && [self getDeviceHeight] == 375.0) {
            return YES;
        } else {
            return NO;
        }

    }

}


}
+ (BOOL)isIPHONE6Plus{


// < iOS 8.0
if(SYSTEM_VERSION_LESS_THAN(@"8.0")){

    if ([self getDeviceWidth] == 414.0 && [self getDeviceHeight] == 736.0) {
        return YES;
    } else {
        return NO;
    }

    // >= iOS 8.0
}else{

    if(IS_PORTRAIT){

        if ([self getDeviceWidth] == 414.0 && [self getDeviceHeight] == 736.0) {
            return YES;
        } else {
            return NO;
        }

    }else{

        if ([self getDeviceWidth] == 736.0 && [self getDeviceHeight] == 414.0) {
            return YES;
        } else {
            return NO;
        }

    }

}


}

+ (CGFloat)getDeviceHeight{

//NSLog(@"Device width: %f",[UIScreen mainScreen].bounds.size.height);
return [UIScreen mainScreen].bounds.size.height;
}
+ (CGFloat)getDeviceWidth{

//NSLog(@"Device width: %f",[UIScreen mainScreen].bounds.size.height);
return [UIScreen mainScreen].bounds.size.width;
}

// আপনি আরও ডিভাইস যুক্ত করতে পারেন (ieiPad)।


প্রশ্নটি স্ক্রিন রেজোলিউশনের ভিত্তিতে ডিভাইস স্বীকৃতি সম্পর্কিত নয়। অধিকন্তু অ্যাপল অ্যাডাপটিভ ইউআই তৈরির পরামর্শ দেয় যা ডিভাইস / স্ক্রিন সনাক্তকরণে নয়, আকারের ক্লাসের উপর ভিত্তি করে
জুলিয়ান ক্রোল

0

মেনস্ক্রিনের সীমানায় ন্যূনতম / সর্বাধিক ব্যবহার করে, সামান্য পরিবর্তিত মনিমিয়ার সমাধান ব্যবহার করা হয়েছে, এটি আইওএস সংস্করণ চেক ব্যতীত one
আমার দরকার ছিলCGRect তাই পেয়েছিলাম CGRectmainscreen সীমা থেকে পরিবর্তিত size.width=min(w,h), size.height=max(w,h)। তারপর আমি যা OS স্বাধীন পেতে নামক CGRectআমার কোডে দুটি স্থান, যেখানে আমি জন্য স্ক্রিন সাইজ পেয়ে ফাংশন OpenGLআড়াআড়ি মোড প্রদর্শন অবস্থানে চলচ্চিত্র IOS 8.x উপর -, ছোঁয়া ইত্যাদি ফিক্স করার আগে আমি 2 সমস্যা OpenGL1 /: দৃশ্য ভুল ছিল বাম নীচের অংশে পূর্ণ পর্দার 4। এবং দ্বিতীয় স্পর্শগুলি অবৈধ মানগুলি ফেরত দিয়েছে। উভয় সমস্যা যেমন ব্যাখ্যা করা হয়েছে ঠিক করা হয়েছিল। ধন্যবাদ!

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