Fre*_*ins 6 cocoa-touch objective-c uiimageview ios ios7
我正在尝试按照以下建议为整个应用设置背景图片:为整个iPhone/iPad应用设置背景图片
但是在iOS 7中(不了解其他版本)它根本不能正常工作.我创建了一个简单的存储库,以便您可以更好地了解正在发生的事情.转换中有一些故障.
当您在第一个视图中点击一行时,第二个视图将被推入导航控制器,但是有一个奇怪的效果.似乎行透明度起到了这个作用.另一个问题是,当你回到前一个视图控制器时,会从导航堆栈中弹出一个视图控制器的微妙阴影.正如我之前所说,你可以通过运行简单的Xcode项目得到我的意思.
回复:https://github.com/socksz/FixedBackgroundImage
有任何想法吗?我已经尝试设置每个控制器的背景图像,但它不是我想要的,因为那样的图像"重叠"以前的背景图片,这不是预期的效果.
希望我解释得很好.
编辑1
似乎问题出现是因为iOS 7管理两个视图控制器之间的转换的方式.你在第二个视图控制器中并尝试使用滑动手势转向上一个控制器,你可以看到,当你开始手势时,第一个控制器出现在第二个控制器(你正在看到的控制器)下面,并且,因为UITableViewCells有透明背景,你已经看到第一个控制器.其实我担心没有解决方案.遗憾的是,如果不在每个控制器上设置背景图像,我就无法获得固定的背景图像.

我在iPhone应用程序中要求根据用户的偏好设置页面的背景图像.我处理它的方法是添加一个UIImageView背景图像作为视图的子视图,就像这样 -
UIImageView *bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background-image"]];
bgImageView.frame = self.view.bounds;
[self.view addSubview:bgImageView];
[self.view sendSubviewToBack:bgImageView];
Run Code Online (Sandbox Code Playgroud)
我克隆了你的Github存储库,并在viewDidLoad两个视图控制器中添加了上面的代码.我还在同一方法中添加了以下代码行 -
self.tableView.opaque = NO;
Run Code Online (Sandbox Code Playgroud)
我didFinishLaunchingWithOptions在您设置背景颜色的位置注释掉了代码.通过这些更改,在视图控制器之间导航时的工件消失了.我测试了iPhone Retina(3.5英寸)以及iPhone Retina(4英寸)模拟器.
在导航到ViewController故事板和从故事板导航时看到伪影的原因需要进行一些调查.我的建议可能适用于您的要求,也可能不适用,但是,您可以尝试将其作为解决方案.
PS该方法需要一些调整来自动布局约束.
你只需要在
appdelegate.m文件的applicationdidFinishLaunchingWithOptions:方法中写一行
[self.window setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"MainBackground.png"]]];
Run Code Online (Sandbox Code Playgroud)
并将下面的行放在每个屏幕的viewDidLoad方法中
[self.view setBackgroundColor:[UIColor clearColor]];
Run Code Online (Sandbox Code Playgroud)
将此代码放入您的 appdelegate.m 文件 applicationDidFinishLaunching 方法中。
UINavigationController *navigationController = [[UINavigationController alloc]initWithRootViewController:rootViewController];
windowBackground=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"background_window.png"]];
windowBackground.frame=CGRectMake(0, 0, 320, 568);
[window addSubview:windowBackground];
[windowBackground release];
window.frame = CGRectMake(0, 0, window.frame.size.width,568);
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)
在每个 viewController 类 viewDidLoad 方法中添加此代码。
self.view.backgroundColor = [UIColor clearColor];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19827 次 |
| 最近记录: |