使用NSLayoutConstraint该类,可以创建基于视图基线(NSLayoutAttributeBaseline)的约束.但是,我没有看到任何描述如何UIView实际为自动布局系统提供基线值的文档.
如果我想创建一个定义UIView基线的自定义子类,我该怎么做?NSView定义了baselineOffsetFromBottom一种我认为在OS X上以某种方式涉及的方法,但是这在iOS中是如何工作的?
我有一组标签放在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) 我有一个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很新,似乎找不到任何解释如何做这种事情的文章.有人能指出我正确的方向吗?
安东尼
我试图以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因此它们反映了文本字段的内容文本字段的属性?
我想创建一个表有两列:user_id,image_id.我不想要user_id或者不是image_id唯一的,但我也希望保护我的桌子免受重复的同一对user_id和image_id.我能这样做吗?
我注意到从iOS 8.0开始,所有NSCalendarUnits(例如NSDayCalendarUnit)都被正式弃用.
什么是替代品?
我想使用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应用程序启动时列表中的一个屏幕.
我错过了什么?
谢谢
有关自动布局的文档是指设置NSViewShowAlignmentRects为显示UIView应用程序中对象周围的对齐方式.我已经尝试为Xcode设置它,但是它显示了Xcode本身,而不是应用程序在模拟器中运行时.
defaults write com.apple.dt.Xcode NSViewShowAlignmentRects -bool YES
Run Code Online (Sandbox Code Playgroud) 我正在学习NSControl.我知道NSCell在OS X 10.10 Yosemite 中已经开始弃用,所以我宁愿不使用一个即将消失的API.此外," NSControl类参考"显示已弃用所有单元格访问器.
我理解这一切,但对于NSControl在10.10上编写子类的人来说,推荐的课程并不清楚.关于这个主题的所有Apple指南都没有提到它的弃用NSCell.我想我可以用旧的方式做事,但是当Apple将弃用NSCell提升到一个新的水平时,我需要更改我的代码.
甚至可以在NSControl不使用的情况下实现子类NSCell吗?
任何人都可以提供建议或链接到这个主题的资源?这证明谷歌很难.
我正在尝试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 ×4
autolayout ×3
ios ×2
objective-c ×2
xcode ×2
airplay ×1
apple-tv ×1
delegates ×1
explicit ×1
instruments ×1
ios8 ×1
ipad ×1
macos ×1
nscalendar ×1
nscell ×1
nscontrol ×1
nstextfield ×1
nstextview ×1
nsview ×1
osx-yosemite ×1
sqlite ×1
uiview ×1
unique ×1