我正在开发一个UILabel具有大型主文本的文本,后跟较小的文本,告诉您是谁说的:

现在它基本上是NSAttributedString小文本上的字体属性.
我想把事情做好,所以大文字包好,但小文字没有.也就是说,如果文本将与正确的项目中的所有内容相同,则它应该按原样呈现,但是它会像在左侧项目中一样包裹,整个小文本应该出现在下一行:

与我想要实现的HTML相当的是:
Title <nobr>Subtitle</nobr>
- or -
Title <span style="white-space:nowrap">Subtitle</span>
Run Code Online (Sandbox Code Playgroud)
我已经尝试将这两个转换为NSAttributedStrings,NSHTMLTextDocumentType它似乎没有直接翻译.
通过该解析上类集群文件,NSNumber实现了initWithChar:在大致按以下方式:
- (id)initWithChar:(char)c
{
[self release];
return [[__NSCharNumber alloc] initWithChar:c];
}
Run Code Online (Sandbox Code Playgroud)
同样,您可以使用此模式从Nib初始化视图:
- (id)initWithFrame:(CGRect)frame
{
id realSelf = [[self class] nib] instantiateWithOwner:nil options:nil][0];
realSelf.frame = frame;
[self release];
return realSelf;
}
Run Code Online (Sandbox Code Playgroud)
我想知道,self在这些案件中,ARC是否管理了未退回的释放?是否记录在任何地方?
我正在寻找一种从函数中删除调试代码的方法,这样我就可以为闭包添加测试挂钩.我已经阅读了 Google Closure Compiler高级版:在编译时删除了代码块,并测试了删除调试代码的方法如下:
/** @define {boolean} */
var DEBUG = true;
if (DEBUG) {
console.log('remove me');
}
Run Code Online (Sandbox Code Playgroud)
简单的优化--define='DEBUG=false'减少了这个var DEBUG=!1;.这同样适用于此:
/** @const */
var DEBUG = false;
if (DEBUG) {
console.log('remove me');
}
Run Code Online (Sandbox Code Playgroud)
我遇到麻烦的地方是在函数中使用这个约定:
/** @const */
var DEBUG = false;
function logMe() {
if (DEBUG) {
console.log('remove me');
}
}
Run Code Online (Sandbox Code Playgroud)
这减少到以下几点:
var DEBUG=!1;function logMe(){DEBUG&&console.log("remove me")};
Run Code Online (Sandbox Code Playgroud)
我希望它进一步减少到:
var DEBUG=!1;function logMe(){};
Run Code Online (Sandbox Code Playgroud)
有没有理由不按预期工作?我真的只是想找到一种清除方法来剥离调试代码,我还没准备好接受高级优化.
更新
Per @ John的回答,我实现了自己的编译器,并发现以下配置将从if (DEBUG) {}代码的内部和外部删除@define:
CompilerOptions options = new …Run Code Online (Sandbox Code Playgroud) 我在应用程序中使用动态类型,并且有我想要更改字体外观的场景,例如使其变为斜体或取消绑定.添加样式很容易:
UIFontDescriptor *descriptor = [[UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleHeadline]
fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
UIFont *font = [UIFont fontWithDescriptor:descriptor size:descriptor.pointSize];
Run Code Online (Sandbox Code Playgroud)
然而,没有明确的机制去除风格.我可以尝试调整属性,但它们看起来更令人生畏,完全没有文档的API:
Run Code Online (Sandbox Code Playgroud)Regular Headline: { NSCTFontUIUsageAttribute = UICTFontTextStyleHeadline; NSFontNameAttribute = ".AppleSystemUIHeadline"; NSFontSizeAttribute = 17; } Italic Headline: { NSCTFontUIUsageAttribute = UICTFontTextStyleItalicHeadline; NSFontNameAttribute = ".AppleSystemUIItalicHeadline"; NSFontSizeAttribute = 17; }
我还缺少另一条途径吗?我可以使用,[UIFont systemFontWithSize:descriptor.pointSize]但我不想丢失动态类型提供的任何绘图规则.
我是Objective-C的新手,我正在尝试根据Apple的文档创建一个单例类.
+ (MyGizmoClass*)sharedManager
{
if (sharedGizmoManager == nil) {
sharedGizmoManager = [[super allocWithZone:NULL] init];
}
return sharedGizmoManager;
}
+ (id)allocWithZone:(NSZone *)zone
{
return [[self sharedManager] retain];
}
Run Code Online (Sandbox Code Playgroud)
在此代码中sharedManager是一个静态方法,它将检查此类的对象是否存在.如果是这样,它将返回先前创建的对象,否则它将创建一个新对象.
我有一些问题:
如果sharedManager是静态的,它如何访问super?
当我打印[super class]为什么它给出当前的类名?
为什么[[super allocWithZone:NULL] init]返回当前的类对象?
如果super等于self这里,为什么它不调用当前类allocWithZone:(NSZone *)zone?
在执行某些网络操作时,我提供了一个模态视图控制器(类似于MBProgressHUD但作为视图控制器)以防止用户交互并指示进度.
视图控制器modalPresentationStyle = .Custom使用转换委托和自定义演示控制器进行动画处理.除了动画转换动画之外,它们没有自定义动作来驱动演示文稿.
我遇到的问题是,无论何时出现视图控制器,它都会将状态栏颜色变为黑色.我可以覆盖preferredStatusBarStyle以使其始终返回.LightContent但有时这个视图控制器呈现在视图控制器上.Default,我也不想在那里更改它.基本上,我想要有相同的行为UIAlertController.
我已尝试配置演示控制器以将呈现的视图控制器移出状态栏空间:
private class SEUIProgressControllerPresentationController: UIPresentationController {
override func shouldPresentInFullscreen() -> Bool {
return false
}
private override func frameOfPresentedViewInContainerView() -> CGRect {
return super.frameOfPresentedViewInContainerView().insetBy(dx: 40, dy: 100)
}
...
}
Run Code Online (Sandbox Code Playgroud)
这些设置会将显示控制器的顶部移出状态栏,但状态栏仍会受到影响.是否有我失踪的属性会阻止我的视图控制器更新状态栏样式?
ios uistatusbar presentviewcontroller swift uipresentationcontroller
我有一个可重复使用的视图,我将使用UITableViewCell's和UICollectionViewCell,并需要获取其尺寸tableView:heightForRowAtIndexPath:.一些子视图里面有东西,layoutSubviews所以我不能打电话systemLayoutForContentSize:,而我的计划是:
我遇到的问题是,我不能强制视图布局而不将其插入视图并等待runloop.
我提炼了一个相当无聊的例子.这是View.xib.子视图未对齐以突出显示视图永远不会布局到基线位置:

在主线程上我打电话:
UIView *view = [[UINib nibWithNibName:@"View" bundle:nil] instantiateWithOwner:nil options:nil][0];
NSLog(@"Subviews: %@", view.subviews);
view.frame = CGRectMake(0, 0, 200, 200);
[view updateConstraints];
[view layoutSubviews];
NSLog(@"Subviews: %@", view.subviews);
[self.view addSubview:view];
[view updateConstraints];
[view layoutSubviews];
NSLog(@"Subviews: %@", view.subviews);
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Subviews: %@", view.subviews);
});
Run Code Online (Sandbox Code Playgroud)
我得到以下视图信息:
1) "<UIView: 0x8bad9e0; frame = (50 50; 220 468); autoresize = W+H; layer = <CALayer: 0x8be0070>>"
2) "<UIView: 0x8bad9e0; frame = …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置maven来在我的web项目中的目录上执行LESS CSS预处理器.基本流程是:
<foreach/>循环遍历目录并查找所有.less文件并调用目标.为此,我有以下XML:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>compile</phase>
<configuration>
<target name="processLessFile">
<!-- ... -->
</target>
<target name="main">
<taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="maven.plugin.classpath"/>
<property name="css.dir" location="src/main/webapp/css"/>
<foreach param="file" target="processLessFile">
<fileset dir="${css.dir}">
<filename name="**/*.less" />
</fileset>
</foreach>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>ant</groupId>
<artifactId>ant-contrib</artifactId>
<version>1.0b2</version>
</dependency>
</dependencies>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是"主"目标开始执行但后来失败<foreach>:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (default) on project model-web-project: An Ant BuildException has occured: The following error occurred while executing this …Run Code Online (Sandbox Code Playgroud) 更新iOS7的应用程序时,UI显示在状态栏区域内.请参阅下面的图像中的"关于我们"和搜索按钮.

在iOS6中,它从状态栏下方的正确位置开始.请注意,我是以编程方式创建此UI,而不是从故事板创建.
我找到了以下解决方案并将其放在我的视图控制器中,但它无法正常工作:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
{
self.edgesForExtendedLayout = UIRectEdgeNone;
}
Run Code Online (Sandbox Code Playgroud)
我rootViewController的标签栏我也试过以下没有运气:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
{
self.tabBarController.edgesForExtendedLayout = UIRectEdgeNone;
}
Run Code Online (Sandbox Code Playgroud)
在我的其他故事板应用程序中,我能够在底栏和顶栏下取消选择.如果没有故事板,我该怎么做才能达到同样的效果?
我正在使用Xcode 6中的第一个SpriteKit应用程序,在Swift中编码.现在我从透明的png文件中制作了一些漂亮的按钮.但我想按下按钮时显示视觉效果.
我现在如何显示静态按钮的示例:
let playButton = Button(imageNamed:"playButton")
playButton.position = CGPointMake(self.size.width/2, self.size.height/2 - playButton.size.height * 2.5 - displacement)
self.sharedInstance.addChildFadeIn(playButton, target: self)
Run Code Online (Sandbox Code Playgroud)
任何效果都足够了,可能是脉冲效应,或按下时发光.我搜索过,但我在Swift中找不到任何东西.
编辑:更多信息
class Button: SKSpriteNode {
init(imageNamed: String) {
let texture = SKTexture(imageNamed: imageNamed)
// have to call the designated initializer for SKSpriteNode
super.init(texture: texture, color: nil, size: texture.size())
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
self.runAction(SKAction.scaleTo(1.3, duration: kButtonFadingSpeed))
}
override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
self.runAction(SKAction.scaleTo(1.3, duration: kButtonFadingSpeed))
}
override func touchesEnded(touches: NSSet, withEvent event: …Run Code Online (Sandbox Code Playgroud) ios ×6
objective-c ×4
ios7 ×2
iphone ×2
swift ×2
ant ×1
ant-contrib ×1
autolayout ×1
javascript ×1
maven ×1
minify ×1
skspritenode ×1
sprite-kit ×1
uifont ×1
uikit ×1
uistatusbar ×1