我有一个图形被绘制在一个UIScrollView.它是一个UIView使用自定义子类CATiledLayer作为其层的大型.
当我放大和缩小时UIScrollView,我希望图形动态调整大小,就像我从图表返回时一样viewForZoomingInScrollView.但是,Graph在新的缩放级别重绘自己,我想将变换比例重置为1x1,以便下次用户缩放时,变换从当前视图开始.如果我将转换重置为Identity in scrollViewDidEndZooming,它可以在模拟器中工作,但会EXC_BAD_ACCSES在设备上抛出.
这甚至都没有在模拟器上完全解决问题,因为下次用户放大时,变换将自身重置为它所处的任何缩放级别,因此看起来,如果我缩放到2x,例如,它突然达到4倍.当我完成缩放时,它以正确的比例结束,但实际的缩放行为看起来很糟糕.
首先:如何让图形在缩放后以1x1的标准比例重绘自己,如何在整个过程中进行平滑缩放?
编辑:新发现错误似乎是" [CALayer retainCount]: message sent to deallocated instance"
我自己永远不会释放任何图层.在此之前,我甚至没有删除任何观点或任何内容.在缩放和旋转时抛出此错误.如果我在旋转之前删除对象并在之后重新添加它,它不会抛出异常.这不是缩放的选项.
我必须转换一个NSDictionary对象,NSData并且我必须NSDictionary从NSData对象中获取相同的内容.我该怎么办呢?
我不是iOS开发人员,但开始学习Swift.
我尝试将一些逻辑从Android项目转换为iOS
我有以下方法:
func addGroupItemSample(sample : WmGroupItemSample){ // some custom class
var seconds: NSTimeInterval = NSDate().timeIntervalSince1970
var cuttDate:Double = seconds*1000;
var sampleDate: UInt64 = sample.getStartDate(); // <-- problematic place
if(sampleDate > cuttDate){
// ....
}
}
Run Code Online (Sandbox Code Playgroud)
从上面的方法,您可以看到sample.getStartDate()返回类型UInt64.
我认为它long在Java中是这样的:System.currentTimeMillis()
但当前时间以毫秒为单位定义为Double.
是混合的正确方法Double,UInt64还是我只需要代表所有毫秒Double?
谢谢,
在UIView的中心有一个名为nicknameLabel的UILabel,并将在nicknameLabel后附加一个性别图像.
但是当nicknameLabel有很多文本时,它将超出UIView的范围.

那么,如何限制UILabel的最大宽度?
顺便说一句:我使用的是故事板.谢谢.
谁可以解释为什么你应该使用从一个单元格viewWithTag获取子视图(例如UILabel等)dequeueReusableCellWithIdentifier?
一些背景信息:我有一个UITableViewCell带有几个UILabels 的自定义(我在下面复制了一个简单的版本).这些标签在关联的NIB文件中定义,并使用IBOutlets 声明并链接回自定义单元的控制器类.在tableview中dequeueReusableCellWithIdentifier,我这样做:
CustomCell *customCell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"CustomCellId"];
if (customCell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"customCell" owner:self options:nil];
for (id oneObject in nib)
if ([oneObject isKindOfClass:[CustomCell class]])
customCell = (CustomCell *)oneObject;
}
customCell.firstLabel.text = @"Hello";
customCell.secondLabel.text = @"World!";
return customCell;
Run Code Online (Sandbox Code Playgroud)
一切正常.但是从我看过的教程中,看起来在更改标签的值时,我应该这样做:
UILabel *firstLabel = (UILabel *)[customCell.contentView viewWithTag:555];
firstLabel.text = @"Hello";
UILabel *secondLabel = (UILabel *)[customCell.contentView viewWithTag:556];
secondLabel.text = @"World!";
Run Code Online (Sandbox Code Playgroud)
(标签的标签值已在NIB中设置).
有人能告诉我哪种方法更受欢迎,为什么? …
我试图touchesBegan在父母的叠加中处理触摸事件,UIView但也允许触摸输入传递到UIView下面的兄弟.我预计会有一些直接的方式来处理触摸事件,然后说"现在将它发送给下一个响应者,好像这个不存在",但我能找到的所有nextResponder方法似乎都是回馈我的叠加视图的父级.然后那个父母没有真正将它传递给那个叠加视图的下一个兄弟,所以我不确定如何做一个看似简单的任务,通常用触摸回调来获得一个真或假的返回值告诉它是否继续处理小部件层次结构.
我错过了一些明显的东西吗
我在Storyboard中创建了ViewController,我正在使用它
instantiateViewControllerWithIdentifier:
Run Code Online (Sandbox Code Playgroud)
加载它.但我需要将此VC作为基类,并使用3-4个子类来更改其属性.
如何获取我的子类的实例instantiateViewControllerWithIdentifier?
我正试图在iPad中设置一个CTFrame与我UITextView的文本格式完全匹配的文件.首先,我将UITextView文本转换为属性字符串.然后我设置了绘图框的宽度和高度,其中Core Text将绘制文本.我成功地使用Core Text绘制文本,但UITextViewCore Text显示略有不同的结果,即使我使用相同的字体和大小.具体来说,当我使用时[UIFont systemFontOfSize:21],每个空格中的UITextView像素比Core Text的结果多一个像素.
对于短句或单词是可以的,但如果UITextView和Core Text有多行,则它们的结果会变得非常不同.例如,UITextView对行尾的一个单词执行自动换行,而Core Text将该单词保留在同一行.如果你看到附图,最后一个单词"段落"的起始位置已经非常不同了(由于8个空格字符,8个像素的间隙).
更糟糕的是,如果我使用不同的字体,例如添加到我的项目中的自定义字体,则每个字符都会UITextView有1个像素.
我正在使用Core Text来查找当前光标的像素位置UITextView,因此它们彼此完全匹配,每行包含相同数量的字符和单词.
问题:有没有办法使Core Text对象与UITextView的文本格式完全匹配?
谢谢!
这是我如何设置属性字符串的代码.(我刚刚关注了Core Text Guide.)
CTFontRef font = CTFontCreateWithName((CFStringRef) [UIFont systemFontOfSize:21.0].fontName, 21.0, NULL);
CFMutableAttributedStringRef attrString2 = CFAttributedStringCreateMutable(kCFAllocatorDefault, 0);
CFAttributedStringReplaceString (attrString2, CFRangeMake(0, 0), (CFStringRef) string);
CFAttributedStringSetAttribute(attrString2, CFRangeMake(0, [string length]),kCTFontAttributeName, font);
Run Code Online (Sandbox Code Playgroud)
这是一张照片.

在应用程序中,我可以在设置中选择应使用哪种语言.如果未选择任何内容,则会检测并选择iPhone语言为英语,法语或德语.如果这些语言都不是iPhone语言,则设置为使用英语.手动更改设置中的语言可以正常工作.现在我添加了一个今天的扩展,它运行得很好但我需要访问settings-bundle来获取语言的NSUserDefaults(如果手动更改).在这两个目标中,我激活了App-Groups
group.com.companyname.appname
Run Code Online (Sandbox Code Playgroud)
并选择它.
在应用程序中我得到了语言
NSString *manualLanguageSet = [[NSUserDefaults standardUserDefaults] valueForKey:SPRACHWAHL];
Run Code Online (Sandbox Code Playgroud)
在今天的扩展中,我试图通过:
NSString *manualLanguageSet = [[[NSUserDefaults alloc] initWithSuiteName:@"group.com.companyname.appname"] valueForKey:SPRACHWAHL];
Run Code Online (Sandbox Code Playgroud)
对于NSLog(@"Settings-Sprache: %@", manualLanguageSet);运行today-extension时的结果是(无论是否在设置中选择了哪种语言)
2014-09-13 16:48:36.331 HdB今日[3734:284836]设置 - Sprache:(null)
我该怎么做才能更正/如何访问设置(settings.bundle)?
我正在使用Swift创建一个应用程序.我有一个UITableView我填充数据库中的一些数据.当用户点击一个单元格时,我想触发一个动作.
我做了什么 :
var array: [String] = ["example"]
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return array.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = UITableViewCell(style :UITableViewCellStyle.Default, reuseIdentifier: "cell")
cell.textLabel.text = array[indexPath.row]
cell.tag = indexPath.row
cell.targetForAction("getAction:", withSender: self)
return cell
}
func getAction(sender:UITableViewCell)->Void {
if(sender.tag == 0) {
println("it worked")
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试从另一个帖子调整解决方案,但我做错了.先感谢您
ios ×9
iphone ×4
objective-c ×2
swift ×2
uitableview ×2
uiview ×2
cocoa-touch ×1
core-text ×1
events ×1
ios8 ×1
ipad ×1
nsdata ×1
nsdate ×1
nsdictionary ×1
storyboard ×1
touch ×1
uilabel ×1
uiresponder ×1
uiscrollview ×1
uistoryboard ×1
uitextview ×1
zooming ×1