إضافة صورة خلفية لUITableViewController في القائمة على التطبيق الإنتقال
-
06-07-2019 - |
سؤال
ولدي التطبيق التنقل إلى حيث أنا أدفع UITableViewControllers
إلى المكدس. وأود أن أضيف UImage
خلفية كل من بلدي UITableViewControllers
. ليس UIColor
، ولكن UImage
. أنا أعرف كيف يمكن القيام بذلك باستخدام ملف Nib
ووضع UITableView
نفسه أن يكون استخدام [UIColor ClearColor]
، ولكن لا أريد أن تذهب من خلال كل ما عندي من UITableViewControllers
وتغييرها إلى استخدام ملفات Nib
، الخ.
ولقد وجدت أيضا <لأ href = "http://howtomakeiphoneapps.com/2009/03/how-to-add-a-nice-background-image-to-your-grouped-table-view/" يختلط = "نوفولو noreferrer"> هذا الحل حيث سيكون أمرا رائعا لو كنت فقط باستخدام tableviewcontroller احد في تطبيقي. أعتقد أنه قد يكون هناك طريقة لجعل هذا العمل، وذلك بإضافة subview "أدناه" وجهة نظري الجدول الذي يتم إنشاؤه بشكل افتراضي في UITableViewController
؟
وأي اقتراحات ستكون كبيرة.
المحلول
ولكن الأمر يختلف قليلا في القائمة على التطبيق والملاحة: مجرد تغيير خلفية عرض الملاحة أن كل عرض جدول يجلس على. وضع التعليمة البرمجية التالية في viewDidLoad
كل UITableViewController يعمل:
self.navigationController.view.backgroundColor =
[UIColor colorWithPatternImage:[UIImage imageNamed:@"myImage.png"]];
self.tableView.backgroundColor = [UIColor clearColor];
ولكن قد تحتاج فقط إلى القيام بذلك مرة واحدة، على أعلى مستوى وحدة تحكم الملاحة، وليس في كل وحدة تحكم tableview (على الرغم من أنك سوف لا تزال بحاجة الى تعيين كل خلفية واضحة).
نصائح أخرى
في نظام التشغيل iOS6 استخدام هذا:
UIImageView *boxBackView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TextureBoxboard.jpg"]];
[self.tableView setBackgroundView:boxBackView];
إذا صفك وفئة فرعية UIViewController ثم يمكنك أن تفعل ذلك مثل هذا:
[self.view setBackgroundColor:
[UIColor colorWithPatternImage:
[UIImage imageWithContentsOfFile:
[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:
@"background.png"]]]];
UIImageView *backgroundView =
[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]];
backgroundView.frame = CGRectMake(0,
0,
self.navigationController.view.frame.size.width,
self.navigationController.view.frame.size.height);
backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight;
[self.navigationController.view insertSubview:backgroundView atIndex:0];
[backgroundView release];
self.tableView.backgroundColor = [UIColor clearColor];
وكما قال GORM
<اقتباس فقرة> وعليك سوى أن تفعل ذلك مرة واحدة، على أعلى مستوى من UINavigationController
والجواب نظرا بلدي Madhup هي الإجابة الصحيحة. UITableViewController هو فئة فرعية من UIViewController، لذلك مشيرا الى ان لطريقة viewDidLoad UITableViewController الخاص بك يعمل بشكل ممتاز.
واعتبارا من دائرة الرقابة الداخلية 3.2، - [UITableView setBackgroundView:] موجودا، والتي قد تكون أسهل من بعض الحلول المقترحة الأخرى للمضي قدما