我希望在UILabel或UITextField中缩小某些文本的字体大小.这在iOS 7.0之前是可能的:如何获得UILabel(UITextView)自动调整的字体大小?.但是,sizeWithFont已在iOS 7.0中弃用.我已经尝试使用它的替换,sizeWithAttributes,但没有成功.在iOS 7.0中有没有办法做到这一点?
我的目标是制作类似爆炸的动画,其中许多粒子在短时间内发射.我的问题是CAEmitterLayer在开始发射时会添加"未来"粒子,使其看起来像动画已经运行了一段时间.
如何禁用或解决此问题?当我增加birthRate时,我只希望粒子从emitterPosition开始出现,而不是沿CAEmitterCell的预计生命周期中的所有点开始.任何帮助表示赞赏.
#import "EmitterView.h"
@interface EmitterView ()
@property CAEmitterLayer* emitter;
@end
@implementation EmitterView
- (void) awakeFromNib {
[super awakeFromNib];
self.emitter = (CAEmitterLayer*)self.layer;
CAEmitterCell* snowflake = [CAEmitterCell emitterCell];
snowflake.contents = (id)[[UIImage imageNamed: @"snowflake"] CGImage];
snowflake.lifetime = 3;
snowflake.birthRate = 1;
snowflake.velocity = 50;
snowflake.emissionRange = 3.1415;
self.emitter.birthRate = 0;
self.emitter.emitterCells = [NSArray arrayWithObject: snowflake];
self.emitter.emitterPosition = CGPointMake(100, 100);
self.emitter.emitterSize = CGSizeMake(0, 0);
self.emitter.emitterShape = kCAEmitterLayerPoint;
}
+ (Class) layerClass {
return [CAEmitterLayer class];
}
- (void) burst {
self.emitter.birthRate = 10; …Run Code Online (Sandbox Code Playgroud) 我觉得答案很明显,但是我无法弄清楚,这似乎是我经常遇到的问题。基本上我想做这样的事情:
extension NSData {
convenience init(JSONObject: AnyObject) {
do {
self = try NSJSONSerialization.dataWithJSONObject(JSONObject, options: [])
}
catch {
self = nil
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,它不能让我简单地为self赋值。我一直使用枚举来执行此操作,但不允许我使用类来执行此操作。在初始化器实现中,有什么方法可以使用初始化器实现中创建的类的实例来实现?
我正在尝试在Swift中实现Comparable协议,但编译器不喜欢我尝试重载<运算符.我检查了Apple文档和所有SO帖子,但它们都没有编译.Xcode给了我这个警告:
一行上的连续声明必须用';'分隔
并且它一直建议我在小于符号后插入分号.对我所做错的任何见解都表示赞赏.
class SomeClass: NSObject, Equatable, Comparable{
var number: UInt32!
override init()
{
super.init()
self.number = arc4random()
}
func == (lhs: SomeClass, rhs: SomeClass) -> Bool
{
return true
}
func < (lhs: SomeClass, rhs: SomeClass) -> Bool
{
return true
}
}
Run Code Online (Sandbox Code Playgroud)