小编And*_*riy的帖子

如何创建定义基线的自定义UIView?

使用NSLayoutConstraint该类,可以创建基于视图基线(NSLayoutAttributeBaseline)的约束.但是,我没有看到任何描述如何UIView实际为自动布局系统提供基线值的文档.

如果我想创建一个定义UIView基线的自定义子类,我该怎么做?NSView定义了baselineOffsetFromBottom一种我认为在OS X上以某种方式涉及的方法,但是这在iOS中是如何工作的?

uiview autolayout

10
推荐指数
2
解决办法
2513
查看次数

UILabel分配持久并占用8Mb内存

我有一组标签放在UIViews一个单一的内部UIScrollView.他们没有被分配出口.我正在为所有这些使用Avenir Next Ultralight字体,它们有不同的大小.

主视图具有嵌套在导航控制器中的单个视图控制器.

我刚刚检查了分配,并注意到加载时这个单一视图消耗大约10MB的内存,其中8MB是这些标签,当我进入下一个视图时,该分配仍然有效.

可能是什么导致了这个?

这是记录分配的快照.

Snapshot    Timestamp   Growth  # Persistent
 VM: UILabel (CALayer)      7.90 MB 10
  0x5417000 00:02.950.428   1.23 MB  
  0x5553000 00:02.967.675   1.23 MB  
  0x568f000 00:02.978.283   1.23 MB  
  0x591d000 00:03.013.095   832.00 KB    
  0x57cb000 00:03.004.334   832.00 KB    
  0x50a7000 00:02.919.040   832.00 KB    
  0x5177000 00:02.937.076   832.00 KB    
  0x5347000 00:02.940.969   832.00 KB    
  0x52d3000 00:02.998.823   120.00 KB    
  0x52f1000 00:03.023.068   16.00 KB    
Run Code Online (Sandbox Code Playgroud)

这是第一个的堆栈跟踪,其余的是相同的:

   0 libsystem_kernel.dylib mach_vm_allocate
   1 libsystem_kernel.dylib vm_allocate
   2 QuartzCore CA::Render::Shmem::new_shmem(unsigned long)
   3 QuartzCore CA::Render::Shmem::new_bitmap(unsigned int, unsigned int, unsigned …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c instruments xcode-instruments

10
推荐指数
1
解决办法
5307
查看次数

NSCollectionView可以自动调整其子视图的宽度以显示一列

我有一个NSCollectionView包含的集合CustomViews.最初,它将子视图平铺为列和行,如网格.然后我将ColumnsIB中的属性设置为1,所以现在它只是在行中一个接一个地显示它们.然而,即使我CustomView的宽度为400px,它设置为自动调整大小,NSCollectionView宽度为400px,并且设置为1列,子视图的宽度约为80px.

我知道我可以通过以下方式解决这个问题:

CGFloat width = collectionView.bounds.size.width;
NSSize size = NSMakeSize(width, 85);
[collectionView setMinItemSize:size];
[collectionView setMaxItemSize:size];
Run Code Online (Sandbox Code Playgroud)

但是将此代码放在awakeFromNib我的方法中WindowController只在程序启动时设置正确的宽度.当我调整窗口大小(和NSCollectionView我指定的自动调整大小)时,CustomViews保持其初始设置的宽度.

如果需要的话,我很乐意自己调整子视图的大小,但我对Cocoa很新,似乎找不到任何解释如何做这种事情的文章.有人能指出我正确的方向吗?

安东尼

cocoa interface-builder nscollectionview

9
推荐指数
2
解决办法
8131
查看次数

NSTextField宽度和自动布局

我试图以NSTextField编程方式创建.

我想在NSTextField自动布局中使用它,因此它的宽度将自动定义以显示整行(只有一行文本).

问题是,textField.intrinsicContentSize并且textField.fittingSize水平坐标都有-1和0值,因为下面代码的输出是: textField.intrinsicContentSize={-1, 21} textField.fittingSize={0, 21}

代码:

NSTextField* textField = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 10, 24)];    
NSString* str = @"One line of text here.";
[textField setStringValue: str];
[textField setTranslatesAutoresizingMaskIntoConstraints:NO];
[textField invalidateIntrinsicContentSize];

NSLog(@"textField.intrinsicContentSize=%@", NSStringFromSize(textField.intrinsicContentSize));
NSLog(@"textField.fittingSize=%@", NSStringFromSize(textField.fittingSize));
Run Code Online (Sandbox Code Playgroud)

这使文本字段具有由自动布局指定的零宽度.

我应该怎么做才能为有意义的值fittingSize,并intrinsicContentSize因此它们反映了文本字段的内容文本字段的属性?

cocoa nstextfield nstextview autolayout

9
推荐指数
1
解决办法
6172
查看次数

Sqlite创建唯一的列对

我想创建一个表有两列:user_id,image_id.我不想要user_id或者不是image_id唯一的,但我也希望保护我的桌子免受重复的同一对user_idimage_id.我能这样做吗?

sqlite unique

9
推荐指数
1
解决办法
4465
查看次数

什么是iOS 8.0+ NSCalendarUnits?

我注意到从iOS 8.0开始,所有NSCalendarUnits(例如NSDayCalendarUnit)都被正式弃用.

什么是替代品?

nscalendar nsdatecomponents ios8

9
推荐指数
1
解决办法
2891
查看次数

来自iPad的Airplay - 一个单独的UIView,可在Apple TV上显示

我想使用Airplay将高清图像发送到Apple TV.

Airplay在我的iPad 2上使用iOS 5.0.1正常工作.

当我启动我的应用程序时,我的UIScreen屏幕数组中只有1个项目.(当然是iPad).我注册了更多屏幕的通知,除非我打开多任务栏并选择我的Apple TV,否则它永远不会出现.我不想这样做.

我想要一个应用程序弹出窗口,我可以在列表中选择Apple TV或任何其他播放设备.

我用过MPVolumeView,确实给了我那个列表 - 并且让我选择了Apple TV - 但是我没有得到Apple TV被选中的回叫通知 - 所以我可以设置我UIWindow的新视图!(但多任务栏确实确认Apple TV现在已经勾选,而且图标MPVolumeView也确实变为蓝色).

我也试过了externalDisplay示例应用程序,这也只显示UIScreens应用程序启动时列表中的一个屏幕.

我错过了什么?

谢谢

objective-c ipad ios airplay apple-tv

8
推荐指数
1
解决办法
3942
查看次数

如何设置NSViewShowAlignmentRects?

有关自动布局的文档是指设置NSViewShowAlignmentRects为显示UIView应用程序中对象周围的对齐方式.我已经尝试为Xcode设置它,但是它显示了Xcode本身,而不是应用程序在模拟器中运行时.

defaults write com.apple.dt.Xcode NSViewShowAlignmentRects -bool YES
Run Code Online (Sandbox Code Playgroud)

xcode ios autolayout

8
推荐指数
2
解决办法
2222
查看次数

在OS X 10.10中,我可以在没有NSCell的情况下实现NSControl吗?

我正在学习NSControl.我知道NSCell在OS X 10.10 Yosemite 中已经开始弃用,所以我宁愿不使用一个即将消失的API.此外," NSControl类参考"显示已弃用所有单元格访问器.

我理解这一切,但对于NSControl在10.10上编写子类的人来说,推荐的课程并不清楚.关于这个主题的所有Apple指南都没有提到它的弃用NSCell.我想我可以用旧的方式做事,但是当Apple将弃用NSCell提升到一个新的水平时,我需要更改我的代码.

甚至可以在NSControl不使用的情况下实现子类NSCell吗?

任何人都可以提供建议或链接到这个主题的资源?这证明谷歌很难.

macos cocoa nscell nscontrol osx-yosemite

8
推荐指数
1
解决办法
891
查看次数

使用核心动画显式动画NSView

我正在尝试NSView使用核心动画进行滑动.我想我需要使用显式动画而不是依赖于类似的东西[[view animator] setFrame:newFrame].这主要是因为我需要设置动画委托才能在动画结束后采取行动.

我使用动画师工作得很好,但正如我所说,我需要在动画结束时收到通知.我的代码目前看起来像:

// Animate the controlView
NSRect viewRect = [controlView frame];
NSPoint startingPoint = viewRect.origin;
NSPoint endingPoint = startingPoint;
endingPoint.x += viewRect.size.width;
[[controlView layer] setPosition:NSPointToCGPoint(endingPoint)];

CABasicAnimation *controlPosAnim = [CABasicAnimation animationWithKeyPath:@"position"];
[controlPosAnim setFromValue:[NSValue valueWithPoint:startingPoint]];
[controlPosAnim setToValue:[NSValue valueWithPoint:endingPoint]];
[controlPosAnim setDelegate:self];
[[controlView layer] addAnimation:controlPosAnim forKey:@"controlViewPosition"];
Run Code Online (Sandbox Code Playgroud)

这在视觉上有效(并且我在最后得到通知),但看起来实际的controlView没有被移动.如果我使窗口刷新,controlView将消失.我试过更换

[[controlView layer] setPosition:NSPointToCGPoint(endingPoint)];
Run Code Online (Sandbox Code Playgroud)

[controlView setFrame:newFrame];
Run Code Online (Sandbox Code Playgroud)

这确实会导致视图(和图层)移动,但它会破坏某些东西,以至于我的应用程序很快就会因为seg故障而死亡.

大多数显式动画的例子似乎只是在移动a CALayer.必须有一种方法来移动NSView并且还能够设置代理.任何帮助,将不胜感激.

cocoa delegates core-animation explicit nsview

7
推荐指数
2
解决办法
8520
查看次数