我正在实现一个颜色选择表视图,用户可以在其中选择10种颜色(取决于产品).用户还可以选择其他选项(如硬盘容量......).
所有颜色选项都在他们自己的tableview部分中.
我想在textLabel左侧显示一个小方块,显示实际颜色.
现在我正在添加一个简单的方形UIView,给它正确的背景颜色,如下所示:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:RMProductAttributesCellID];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:RMProductAttributesCellID] autorelease];
cell.indentationWidth = 44 - 8;
UIView *colorThumb = [[[UIView alloc] initWithFrame:CGRectMake(8, 8, 28, 28)] autorelease];
colorThumb.tag = RMProductAttributesCellColorThumbTag;
colorThumb.hidden = YES;
[cell.contentView addSubview:colorThumb];
}
RMProductAttribute *attr = (RMProductAttribute *)[_product.attributes objectAtIndex:indexPath.section];
RMProductAttributeValue *value = (RMProductAttributeValue *)[attr.values objectAtIndex:indexPath.row];
cell.textLabel.text = value.name;
cell.textLabel.backgroundColor = [UIColor clearColor];
UIView *colorThumb = [cell viewWithTag:RMProductAttributesCellColorThumbTag];
colorThumb.hidden = !attr.isColor;
cell.indentationLevel …Run Code Online (Sandbox Code Playgroud) 在objective-c中,我可以说以下内容.
[self.promoTextField setKeyboardType:UIKeyboardTypeEmailAddress];
Run Code Online (Sandbox Code Playgroud)
我试着谷歌搜索它,但只是想方设法在objective-c中做到这一点.
我遇到了自定义UIFonts的问题.我加载其中的6个(常规/粗体/ regularItalic/boldItalic中的字体A,浓缩/浓缩变量中的字体B).
但是,这是渲染时的内容:

前两行是正常的,但最后一行表现出基线问题.
我已经尝试在FontLab中更改字体的UPM,上升器,下行器,x高度,以便它匹配第一个字体的值(正确呈现),但无济于事.我已经尝试将字体格式从OTF转换为TTF,没有运气.无论我尝试什么,它总是以这种方式呈现.
有任何人对此有经验吗?
我正在尝试创建与用于查看屏幕截图的AppStore应用程序完全相同的效果:在UITableView中,我有UITableViewCell的自定义子类.其中一个旨在显示某些产品的预览,比如4个图像.我希望它们以与AppStore呈现应用程序截图相同的方式显示:在水平UIScrollView内部及其附加的UIPageControl.
所以我将我的UIScrollView和我的UIPageControl添加到我的UITableViewCell中,就像这样:
@implementation phVolumePreviewCell
- (id)init {
if (self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kVolumePreviewCellIdentifier]) {
[self setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
[self setSelectionStyle:UITableViewCellSeparatorStyleNone];
previews = [[NSMutableArray alloc] initWithCapacity:4];
for (int i = 0; i < 4; i++) {
[previews addObject:@"dummy"];
}
scrollView = [[UIScrollView alloc] initWithFrame:CGRectZero];
[scrollView setPagingEnabled:YES];
[scrollView setBackgroundColor:[UIColor grayColor]];
[scrollView setIndicatorStyle:UIScrollViewIndicatorStyleBlack];
[scrollView setShowsHorizontalScrollIndicator:YES];
[scrollView setBounces:YES];
[scrollView setScrollEnabled:YES];
[scrollView setDelegate:self];
[self.contentView addSubview:scrollView];
[scrollView release];
pageControl = [[UIPageControl alloc] initWithFrame:CGRectZero];
[pageControl setNumberOfPages:[previews count]];
[pageControl setBackgroundColor:[UIColor grayColor]];
[self.contentView addSubview:pageControl];
[pageControl release];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
(注意:我在这里使用虚拟数据填充"预览",只是为了使[预览计数]有效;我想查看scrollView的滚动指示器仅用于测试目的,我稍后会隐藏它们). …
我提出了一个视图控制器presentModalViewController:,现在如何关闭/关闭它?
对于我的开发过程,我需要访问VPN后面的Web服务器并且没有DNS条目.我在4.x上做的是编辑iPhone上的/ etc/hosts,并将其添加到hosts文件中.
现在我正处于5.0 beta版,并且现在不想为了这个目的而越狱.
有没有办法我可以添加一行到/ etc/hosts,只是为了开发目的(最终,分发应用程序不需要这个hack),没有越狱?我可以使用其他方法(例如,在应用程序启动时通过某种未知方式声明虚假DNS条目)吗?
我正在开发一个专为在iPhone/iPad上运行而设计的Javascript密集型网络应用程序.它也适用于所有Webkit浏览器(Safari + Chrome).
我有一个由许多JavaScript文件组成的自制MVC框架:每个视图一个,每个控制器一个,许多"帮助"类.
我还有一堆LESS文件,一个"main"包括每个视图的每个LESS文件(例如,如果我有一个UIListView.js,我也有一个UIListView.less).
目前我正在使用MacVim和Less.app,并且在我真正需要使用开发人员工具进行"硬核"调试时,在iPhone/iPad模拟器,真正的iPhone/iPad,有时还有Safari或Chrome上进行测试.我的所有文件都存储在我的~/Sites/projectX文件夹中,我使用Mac的内置Web服务器浏览.
开发时这没关系,我的index.htm引用了很多小文件但是因为我在我的Intranet上通过WiFi无关紧要.
我想要实现的是一种更"以项目为导向"的方法.就像我在Xcode中开发iOS项目一样,我想将XCode用于我的所有开发需求,将所有源文件保存在一个独立的目录中~/Sites,比如说~/Desktop/projectX.我想有两个配置(调试和发布)用于"构建和运行":
"debug"配置只会编译main .less文件(包括所有小的.less文件),将JS + CSS + HTM文件复制到某个目录(〜/ Sites/projectX_debug),以及所有图形资源.然后根据所选的"子配置",启动iPhone模拟器,iPad模拟器,Safari或Chrome,清除其缓存(通过AppleScript?)并打开index.htm
将所有JS文件粘合在一起并缩小它们的"发布"配置,编译和缩小.less文件,更改index.htm以仅引用粘合的JS,然后在发送所有之前使用pngout/pngcrush/whatever优化所有PNG存档到本地目录(〜/ Sites/projectX_release)或通过sftp存档到我的生产服务器.
我相信我可以使用XCode 4的构建阶段,甚至可以使用GNU makefile或某种预处理器来实现(如果不是全部),但是我迷失在哪里开始.
有人已经有这种设置使用Xcode做除了Mac/iOS开发之外的其他事情,但是仍然使用大多数IDE传统的构建阶段/ makefile的"经典"概念吗?
(一个可接受的解决方法是简单地创建一个bash脚本来处理它 - 我已经可以自己管理它,但我真的想使用集成的XCode功能,只需按Cmd-R"编译"并运行我的在调试模式下的项目).
我试图在iOS 5.1/iPhone 4s(越狱)上运行未签名的应用程序.我做了什么:
禁用XCode中的代码签名.
内置未签名的iPhone应用程序.
通过SSH将其复制到我的iPhone到位置/User/me/development/HelloWorld.app
现在我尝试模拟其签名以在iPhone上运行此应用程序.我运行以下命令:
.
cd /User/me/development
chmod -R 777 HelloWorld.app
ldid -S HelloWorld
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
util/ldid.cpp(567): _assert(78:arch != NULL)
Run Code Online (Sandbox Code Playgroud)
这种错误的可能原因是什么,现在要修复它?
我正在为我的iOS应用程序的本机控件实现类似CSS的样式引擎,以避免从plist中读取一大堆样式属性并在每个控件上应用每一个.
(编辑:不,我不想要UIWebView,我需要自定义本机控件.我不想实现纯CSS,只是看起来像CSS的东西,并使用简单的CSS.)
说我有一个像这样结构的plist:
closeButtonStyle = "background:transparent;font:Georgia/14;textColor:#faa"
titleLabelStyle = "background:transparent;font:Helvetica/12;textAlignment:left"
Run Code Online (Sandbox Code Playgroud)
你可以很容易想象我在这里填充了什么样的属性.
到目前为止,一切正常,我有一个UIStyle类解析这样的声明并将所有找到的值存储在其ivars中; 我也有类别UIView,UILabel,UIButton,...只申报一个-(void)setStyle:(UIStyle *)style方法.仅当定义了样式变量时,此方法才应用样式变量.
正如我所说,一切正常.
我唯一的问题是关于样式字符串的解析.我选择使用NSScanner,但我不确定它是否是最佳选择,并希望得到您的意见.
为了记录,这是我实现我的方式UIStyle:
- UIStyle.h
typedef struct {
BOOL frame:1;
BOOL font:1;
BOOL textColor:1;
BOOL backgroundColor:1;
BOOL shadowColor:1;
BOOL shadowOffset:1;
BOOL textAlignment:1;
BOOL titleEdgeInsets:1;
BOOL numberOfLines:1;
BOOL lineBreakMode:1;
} UIStyleFlags;
@interface UIStyle: NSObject {
UIStyleFlags _has;
CGRect _frame;
UIFont *_font;
UIColor *_textColor;
UIColor *_backgroundColor;
UIColor *_shadowColor;
CGSize _shadowOffset;
UITextAlignment _textAlignment;
UIEdgeInsets …Run Code Online (Sandbox Code Playgroud) 这是在iOS上使用RNCryptor异步解密大文件的后续操作
我已经设法用这篇文章中描述的方法异步解密一个大的下载文件(60Mb),由Calman在他的回答中纠正.
它基本上是这样的:
int blockSize = 32 * 1024;
NSInputStream *cryptedStream = [NSInputStream inputStreamWithFileAtPath:...];
NSOutputStream *decryptedStream = [NSOutputStream output...];
[cryptedStream open];
[decryptedStream open];
RNDecryptor *decryptor = [[RNDecryptor alloc] initWithPassword:@"blah" handler:^(RNCryptor *cryptor, NSData *data) {
NSLog("Decryptor recevied %d bytes", data.length);
[decryptedStream write:data.bytes maxLength:data.length];
if (cryptor.isFinished) {
[decryptedStream close];
// call my delegate that I'm finished with decrypting
}
}];
while (cryptedStream.hasBytesAvailable) {
uint8_t buf[blockSize];
NSUInteger bytesRead = [cryptedStream read:buf maxLength:blockSize];
NSData *data = [NSData dataWithBytes:buf length:bytesRead];
[decryptor addData:data];
NSLog("Sent %d …Run Code Online (Sandbox Code Playgroud) ios ×7
iphone ×4
objective-c ×3
uitableview ×2
xcode ×2
cocoa-touch ×1
code-signing ×1
hosts-file ×1
ide ×1
jailbreak ×1
makefile ×1
opentype ×1
rncryptor ×1
scroll ×1
styling ×1
swift ×1
truetype ×1
uifont ×1
uiscrollview ×1
uitextfield ×1