我的Cocoa项目本地化为意大利语(我的语言)和英语.
如果我运行它,我会看到意大利语中的所有内容(当然,我的操作系统是意大利语!).
如何在不更改操作系统语言的情况下运行它来测试英语本地化?
在正式推荐的方法进行XIB /故事板的定位是创造的.xib和.storyboard文件内xx.lproj(其中xx是两个字母的语言ID)为您想支持的每个本地化.
这会产生一个问题,因为您有多个文件在很多情况下共享相同的UI,这些文件很容易发生变化.如果您想为一个视图重新设计UI,则必须多次执行(更糟糕的是,如果您在xib中输入了可本地化的字符串值).这与DRY原则背道而驰.
NSLocalizedString()
在您需要的地方打电话似乎更有效率,只需使用一个XIB或Storyboard进行一次基本本地化.
那么,为什么(不)我创建本地化的XIB/Storyboard文件?
我正在构建一个使用故事板的IOS 5.1 Web客户端应用程序.我的一个动作是"注销",在此期间我想将我的根视图重置为由故事板的根视图创建的初始视图.(当您登录时,根据您的身份删除或添加一些视图项;当您注销时,我想将它们重置为默认值,我在故事板中指定了这些值.)
我意识到我可以通过编程方式重置/重新添加所有元素,但故事板有什么用?我认为必须通过重新加载视图文件来回到正方形,对吧?
我正在尝试创建一个框架,保留我在项目中使用的一些常用代码.我找到了在线教程并设法创建了一个框架,但我仍然有一个与资源相关的问题(xib,图像等).
假设我有MainViewController.xib
一个UIImageView
使用a test.png
.所有这些都在我的框架包中.
当我在另一个项目中使用框架时,我将其添加到"Copy Bundle Resources"构建阶段.问题是xib只能使用类似的路径访问dummy.framework/Resources/MainViewController.xib
,并且UIImageView
内部无法加载test.png
.
似乎UIImageView将尝试从bundle的根目录加载png,而不是从也存储xib的相对文件夹加载.
有没有人设法创建一个包含代码和资源的框架并在另一个项目中使用它?
在Xcode <9.3中,我们可以通过将顶部栏模拟指标设置为xib来隐藏xib中的状态栏None
.
但现在在9.3中,当设置为时,None
状态栏没有隐藏.
任何想法如何隐藏它?
我们是一个由志愿者本地化的开源Mac应用程序.这些志愿者将在软件的特殊本地化版本(带有未剥离的笔尖)上完成工作,然后将更改发送给原始的xib和字符串文件.
问题在于,虽然有一种方法可以集成字符串更改而不会消除以前的大小更改,但我看不到集成新字符串和大小更改的方法(就像我们添加或替换视图时一样).
我能看到的唯一方法就是让本地化程序直接使用原始xib并向我们发送差异.这意味着他们必须下载整个源代码,而不仅仅是发布的可本地化版本,在Xcode和IB中工作,并自行运行diff命令(每个xib)或安装并使用Mercurial.
基于xib的应用程序有没有更好的方法?
我有一个项目都在Objective C中,除了我的视图控制器,它在Swift中.
当我运行它时,我得到错误
由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:' - [UIViewController _loadViewFromNibNamed:bundle:]加载了"..."笔尖,但未设置视图插座.
所以我打开了我的nib文件,查看"文件所有者",我发现视图根本不显示为插座.
对于我的旧视图控制器(目标c),视图插座会显示.
在我的Swift视图控制器中,我尝试从UIViewController覆盖"view"变量以强制它为@IBOutlet,但它抱怨UIView类型的"view"变量,抱怨UIView ?,并抱怨UIView !
这是简化版本
我的AppDelegate.h
#import <UIKit/UIKit.h>
@class MyViewController;
@class MyViewControllerSwift;
@interface MSAppDelegate : UIResponder <UIApplicationDelegate>
{
}
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UIViewController *viewController;
@end
Run Code Online (Sandbox Code Playgroud)
AppDelegate.m
#import "MyAppDelegate.h"
#import "MyViewController.h"
#import "MySwift-Swift.h"
#import <UIKit/UIKit.h>
@implementation MyAppDelegate
static BOOL USE_SWIFT_VIEW_CONTROLLER = YES;
- (void)dealloc
{
[_window release];
[_viewController release];
[super dealloc];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override …
Run Code Online (Sandbox Code Playgroud) 只想知道是否有人遇到与我相同的问题:Xcode在我触摸的故事板中添加了很多标签.我试图删除,但我不能,因为它继续添加这些标签.
这是我正在使用的新Xcode的一个错误(7.0.1)?
我尝试在这个(链接)教程之后创建@IBDesignable UIView子类.第一个自定义视图很好.但是当我尝试制作另一个时,我有错误.首先,我得到了failed to update auto layout status: the agent crashed
和Failed to render instance of ...
.不知何故,我开始能够生成并运行带有这些错误的项目,但后来我得到了新的错误 - EXC_BAD_ACCESS ...
在线let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
.这是整个方法:
func loadViewFromNib() -> UIView {
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: "advancedCellView", bundle: bundle)
let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
return view
}
Run Code Online (Sandbox Code Playgroud)
用第一个自定义UIView是没问题的.我使用相同的代码..
有任何想法吗?谢谢
我想在我的iPhone应用程序中使用旧的.xib文件.但是当谈到tableViewController故事板时,为了制作自定义单元格等更方便.是否可以制作基于.xib的应用程序,并在其中间,仅为UITableViewController及其DetailedViewController使用故事板?
xib ×10
ios ×6
cocoa ×3
localization ×3
xcode ×3
nib ×2
objective-c ×2
storyboard ×2
swift ×2
frameworks ×1
ibdesignable ×1
iphone ×1
macos ×1
uiimageview ×1
uiview ×1
xcode7 ×1
xcode9.3 ×1