2011-02-06 29 views

Trả lời

88

Đây là cách bạn thiết lập một nền tảng cho một hình ảnh:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]]; 

Edit: Để viết lên những gì Felixyz nói (và nhờ Manni), làm điều này trong đại biểu của bạn:

window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]]; 

Và trong mỗi chế độ xem bạn muốn có hình ảnh, hãy thực hiện điều này:

self.view.backgroundColor = [UIColor clearColor]; 
+7

Tôi đã kết thúc bằng cách sử dụng một UIImageView trên cửa sổ chính nib và UIColor clearColor trên quan điểm của tôi. Lưu ý rằng việc sử dụng colorWithPatternImage khi bạn nói ở trên làm cho việc sử dụng bộ nhớ của tôi nhảy từ 1.7M lên 9.5M khi ứng dụng được tải lần đầu tiên - colorWithPatternImage dường như chỉ ăn hết một tấn bộ nhớ. – Slee

+1

Bạn nên chuẩn bị 3 tệp png cho ứng dụng Universal của mình, theo Background.png, [email protected], Background ~ iPad.png và đặt nền bằng mã bên dưới: self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @ "Background"]]; iOS sẽ chọn tệp png chính xác do danh mục thiết bị của bạn. Hy vọng sự trợ giúp này. – ZYiOS

+0

Tôi đã thử phương pháp trên trong ứng dụng dựa trên 'UINavigation'. Vấn đề với cách tiếp cận này là thiết lập hình ảnh trên window.background đặt hình ảnh đúng cách nhưng làm cho chế độ xem màu khác rõ ràng là xấu như trong khi nhấn hoặc xem pop chồng chéo bạn có thể thấy các khung nhìn được đẩy trong ngăn xếp .Bất cứ ý tưởng làm thế nào để có được nó cố định – Shekhu

8

Phụ thuộc vào loại giao diện bạn có. Tabbed? Điều hướng dựa? Nhưng câu trả lời chung là: thêm UIImageView vào UIWindow của bạn trước/bên dưới chế độ xem chính của bạn. Sau đó, mọi chế độ xem được xử lý bởi bộ điều khiển chế độ xem chính của bạn đều có nền trong suốt. Khó có thể đưa ra lời khuyên cụ thể hơn mà không biết liệu bạn có sử dụng IB hay không, hoặc phân cấp khung nhìn của bạn trông như thế nào.

+1

Navigation dựa, để xem các bộ điều khiển được đẩy và popped nền vẫn – Slee

+0

Kết hợp của sudo và gợi ý Manni làm cho nó dễ dàng để thực hiện những gì bạn cần: thiết lập các backgroundColor trên cửa sổ là một hình ảnh (colorWithPatternImage :) và tạo backgroundColor trên bộ điều khiển điều hướng và tất cả các bộ điều khiển con của nó trong suốt. Bạn có thể phải đặt opaque = NO trên chúng. Lưu ý rằng điều này có thể ảnh hưởng đến hiệu suất trong hoạt ảnh nhưng không phải là vấn đề trên các thiết bị mới hơn. – Felixyz

7

Trong ứng dụng của tôi, tôi đặt màu nền mặc định. Có lẽ bạn có thể làm điều này với hình nền bạn:

1 .: Đặt màu nền của UIWindow của bạn trong appdelegate của bạn:

window.backgroundColor = [UIColor myBackgroundGray]; // own Category 

2 .: Và bây giờ, làm cho tất cả quan điểm khác trong suốt:

self.view.backgroundColor = [UIColor clearColor]; // = transparent 
+1

Điều này gây ra một ux nghèo khi trình bày người thuyết trình phương thức với hoạt hình. Bạn có thể thấy các điều khiển từ chế độ xem phương thức và chế độ xem hiện tại và sau đó chế độ xem hiện tại biến mất. –

2

Nền của bạn là thuộc tính của bất kỳ đối tượng Kế thừa xem nào. Nhãn, Nút, Bộ điều khiển và cửa sổ ứng dụng, ví dụ, tất cả đều có hình nền. Nếu bạn muốn nó hoàn toàn là một bg cho toàn bộ ứng dụng, bạn phải leo lên con đường trong bộ điều khiển của bạn để tìm xem "top" (dưới cùng) xem, và thiết lập nền của nó là hình ảnh bạn mong muốn.

7

Trong appdelegate của bạn trong

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

Thêm dòng này:

[self.window setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]]; 

Sau khi bạn chỉ cần thiết lập quan điểm nền tảng của bạn để [UIColor clearColor];

3

Tôi không chắc về chức năng hoạt động, nhưng tôi cần phải thực hiện điều gì đó tương tự và kết thúc bằng cách sử dụng UIImageView hoạt động tốt (trong C#, nhưng hoạt động tương tự trong obj-c):

//Add the view controller first, to ensure proper order of views later. 
Window.RootViewController = new UIViewController(); 

//create backdrop image view 
var imageView = new UIImageView(Window.Bounds); 
imageView.Image = UIImage.FromBundle("backdrop.jpg"); 

//insert into window. 
Window.InsertSubview(imageView, 0); 

Điều này không xử lý các thay đổi định hướng, nhưng trong trường hợp của tôi, cho phép tôi thêm hiệu ứng chuyển động vào phông nền (chẳng hạn như thị sai).

0

Tôi thường sử dụng chức năng này để tránh trùng lặp với thanh điều hướng trên iphone.

-(void)setImageBackground:(NSString*)imageName{ 
    UINavigationController* navigationController = [self navigationController]; 
    float height = navigationController.toolbar.frame.size.height; 
    CGSize size = self.view.frame.size; 
    size.height = size.height; 
    UIGraphicsBeginImageContext(size); 
    CGRect bounds = self.view.bounds; 
    bounds.origin.y = bounds.origin.y + height; 
    bounds.size.height = bounds.size.height-height; 
    [[UIImage imageNamed:imageName] drawInRect:bounds]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    self.view.backgroundColor = [UIColor colorWithPatternImage:image]; 
} 
0

chỉ cần gọi này assignbackground trong viewDidLoad

override func viewDidLoad() { 
assignbackground() 
} 

func assignbackground(){ 
     let background = UIImage(named: "background") 

     var imageview : UIImageView! 
     imageview = UIImageView(frame: view.bounds) 
     imageview.contentMode = UIViewContentMode.ScaleAspectFill 
     imageview.clipsToBounds = true 
     imageview.image = background 
     imageview.center = view.center 
     view.addSubview(imageview) 
     self.view.sendSubviewToBack(imageview) 
    } 
Các vấn đề liên quan