我想创建一个包含图像和文本的自定义UIBarButtonItem,如下所示:

我尝试了子类化UIBarButtonItem并重写此方法:
- (UIView *)customView
{
if (!self.storedView) {
UIView *temp = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 120, 44)];
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:self.image];
tempImageView.frame = CGRectMake(0, 0, self.image.size.width, self.image.size.height);
UILabel *tempLabel = [[UILabel alloc] initWithFrame:CGRectMake(44, 0, 100, 44)];
tempLabel.text = @"text";
[temp addSubview:tempImageView];
[temp addSubview:tempLabel];
self.storedView = temp;
}
return self.storedView;
}
Run Code Online (Sandbox Code Playgroud)
我这样使用它:
UIBarButtonItem *left = [[LeftItem alloc] initWithTitle:@"Settings" style:UIBarButtonItemStylePlain target:self action:@selector(settingsPressed)];
left.title = @"Settings";
left.image = [UIImage imageNamed:@"settings.png"];
self.navigationItem.leftBarButtonItem = left;
Run Code Online (Sandbox Code Playgroud)
但使用这个我只得到图像,但不是标签.我究竟做错了什么?
我正在使用GCD异步下载我的uitableview的图像,但是有一个问题 - 当滚动图像时闪烁并且一直在变化.我尝试将每个单元格的图像设置为nil,但它没有多大帮助.快速向上滚动时,所有图像都是错误的.我该怎么办?这是我的细胞方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (self.loader.parsedData[indexPath.row] != nil)
{
cell.imageView.image = nil;
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^(void) {
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[self.loader.parsedData[indexPath.row] objectForKey:@"imageLR"]]];
UIImage* image = [[UIImage alloc] initWithData:imageData];
dispatch_async(dispatch_get_main_queue(), ^{
cell.imageView.image = image;
[cell setNeedsLayout];
});
});
cell.textLabel.text = [self.loader.parsedData[indexPath.row] objectForKey:@"id"];
}
return cell;
}
Run Code Online (Sandbox Code Playgroud) 我正在读一本书 - Big Nerd Ranch iOS编程.它说不建议使用点符号,因为它会混淆代码.我正在同时观看适用于iOS编程的斯坦福课程,并在其中广泛使用点符号.你会推荐什么?我个人更倾向于括号表示法.
您能解释一下如何将此代码转换为括号表示法吗?
self.display.text = [self.display.text stringByAppendingString:digit];
Run Code Online (Sandbox Code Playgroud)
据我所知,它应该是:
[[self display] setText]:[[[self display] text] stringByAppendingString:digit];
Run Code Online (Sandbox Code Playgroud)
这是对的吗?
关于使用NSArray的IBOutletCollection,我有两个相互矛盾的来源.首先说,您从接口到出口集合链接的顺序是重要的,并且它在出口集合中始终是相同的.例如,如果我们首先将第一个文本字段链接到集合,则元素编号0将是该字段等.
但另一个消息来源告诉我,这是错误的,实际上Outlet集合是随机的,并且绝对不能保证事情的顺序.因此,元素数字零可以是任何文本字段,而不仅仅是接口中的第一个连接.
"iOS 6编程 - 探索iOS SDK"是第一个来源,iTunes上的斯坦福课程是第二个来源.谁是对的?
我正在制作游戏,我想要一个按钮.我如何处理它?我为UI使用单独的类,它是包含所有按钮和界面元素的SKSpriteNode,我不希望Scene在触摸开始方法中为我处理那些按钮按下.
据我所知,我们可以检查触摸开始触摸的节点,所以要实现内置触摸的常规按钮,我需要在touchesBegan和touchesEnded中编写代码,这看起来有点矫枉过正.
或者我应该使用常规UIButton?但我知道你不能动态添加它们,只能在didMoveToView方法中添加,这看起来很糟糕.
我的服务器只运行一个发送推送通知的版本,它有我的生产(发布)推送证书.
如何使用相同的生产证书在我的调试设备上测试通知并调试版本?
我的设备正在发送令牌,但是当我尝试发送真实的推送通知时,Apple服务器返回状态8错误,这意味着设备令牌不正确.
这取自C,并基于此.我们假设我们有一个32位指针
char* charPointer;
Run Code Online (Sandbox Code Playgroud)
它指向内存中包含一些数据的某个位置.它知道这个指针的增量是1个字节,等等.另一方面,
int* intPointer;
Run Code Online (Sandbox Code Playgroud)
也指向内存中的某个位置,如果我们增加它,它知道如果我们加1则它应该增加4个字节.
问题是,我们如何能够解决的寻址空间完整的32位(2 ^ 32) - 4 GB的那些三分球,如果很明显它们包含在其中的一些信息,使他们能够彼此分离,例如char*或int*,所以这给我们留下了32个字节,但少了.
在输入这个问题时,我开始思考,也许它是所有的合成糖,真的是编译器?也许原始指针只是32位,它不关心类型?是这样的吗?
我想在Sprite Kit中创建自己的进度条.
我想我需要图像 - 一个完全空的进度条和填充的进度条.
我有那些图像,我把它们放在空的一个上面,它们是常规的,SKSPriteNodes现在我无法弄清楚如何在我需要的地方剪切我填充的图像?
如何在特定点剪切SKSpriteNode图像?也许质地?
我希望背景固定不同的物体(精灵和其他物体).
玩家将由将在世界各地移动的中心节点代表.我想让我的相机固定在中央节点,例如世界应该移动,相机应保持静止.
我如何实现这一目标?
我用大小的矩形创建我的SKPhysicsBody,我将它设置为节点的大小,但碰撞检测不适用于节点的好部分.如何在物理体周围绘制红框?
我尝试使用精确的碰撞检测,但它没有帮助.我已经检查了一些调试库,但它只绘制了场景的直接后代,而我的节点深度很少.作者显然不知道递归是什么.
如果我的身体是矩形,我如何在物理体周围绘制红框?
ios ×8
objective-c ×4
sprite-kit ×4
ios6 ×2
ios7 ×2
c ×1
notation ×1
progress-bar ×1
xcode5 ×1