[[uiscreen mainscreen] حدود] يعود خالية؟
-
29-09-2019 - |
سؤال
عندما أحاول الحصول على حدود الشاشة الرئيسية [[UIScreen mainScreen] bounds]
, ، يعود فارغة. لقد حاولت مع [[UIScreen applicationFrame] bounds]
كذلك ، لا يزال يعود لاغية.
الجزء الغريب هو ؛ إذا فعلت NSLog(@"%@", [UIScreen mainScreen]);
إنه يطبع الحدود الصحيحة ، وإن لم يكن لدي أي فكرة عن كيفية تحليلها ، إذا كان ذلك ممكنًا.
إليك الرمز ذي الصلة:
-(void)loadView {
[super loadView];
CGRect pagingFrame = [[UIScreen mainScreen] bounds];
NSLog(@"%@", [[UIScreen mainScreen] bounds]); //prints null for me
NSLog(@"Width of original frame = %d", pagingFrame.size.width); //prints out 0
pagingFrame.origin.x -= pagingXOrigin;
pagingFrame.size.width += pagingWidthAdd;
NSLog(@"Width of adjusted frame = %d", pagingFrame.size.width); //still prints out 0
pagingScrollView = [[UIScrollView alloc] initWithFrame:pagingFrame];
pagingScrollView.pagingEnabled = YES;
pagingScrollView.backgroundColor = [UIColor blackColor];
pagingScrollView.contentSize = CGSizeMake(pagingFrame.size.width * [self imageCount], pagingFrame.size.height);
self.view = pagingScrollView;
//Initialize sets
recycled = [[NSMutableSet alloc] init];
visible = [[NSMutableSet alloc] init];
[self tilePages];
}
pagingScrollView
تم إعلانه في ملف الرأس ، كما هو معاد تدويره ومرئي.
أنا أستخدم Xcode 3 و iOS SDK 4.1.
أنا متأكد من أن هناك حلًا بسيطًا جدًا لهذا الغرض ، ومع ذلك ما زلت صاعدًا في Objective-C ، وبالتالي لا يمكنني حله.
شكرًا
المحلول
bounds
هو struct
, ، وليس كائن. لا يمكنك إخراجها باستخدام %@
تنسيق محدد. وبالمثل ، فإن أعضاء الهيكل هم عوامات ، وليس الأعداد الصحيحة. إذا قمت بإخراجها مع %d
, ، أنت ملزم بالحصول على نتائج خاطئة.
نصائح أخرى
ال NSStringFromCGRect
الطريقة تجعل من الأسهل بكثير تسجيل CGRECT بسرعة. نرى وثائق Apple لمزيد من المعلومات ، ولكن إليك مقتطف رمز:
CGRect screenBounds = [[UIScreen mainScreen] bounds];
NSLog(@"%@", NSStringFromCGRect(screenBounds));
لشرح المزيد من التنسيقات "٪@" nsobjects عن طريق الاتصال [الوصف OBJ] على الكائن واستخدام السلسلة التي تم إرجاعها من ذلك. لذلك قبل أن تحاول تنسيق سلسلة مع ٪@ تأكد من أنك تتعامل فعليًا مع NSObject وليس نوعًا آخر.