阴影画在" main"故事板但不在任何其他故事板中

时间:2017-05-14 16:36:07

标签: macos storyboard appkit nsviewcontroller nsshadow

我尝试编写自己的comboBox,因为NSComboBox没有我需要的功能。

因此,我将NSTextField子类化并监视textinput,并根据stringValue得到TableView的数据。

因此,当应该显示TableView时,TextFields superview将添加NSScrollView并调整它的高度等等。 所有这一切都很好。

DropShadow不太好。

因此,我在main.Storyboard中创建了一个新的Xcode-Project,添加了一个NSTextField并将该类更改为我的Subclass。 只要我输入文本,TableView就会出现并且有一个dropShadow。

接下来,我创建一个新的Storyboard,添加一个新的WindowController并执行与main.Storyboard中相同的步骤:添加NSTextField,将类更改为我的子类。 现在我在main.Storyboard中添加一个Button,它有一个动作来呈现新的Storyboard。

在新的故事板中,textfield和tableView的行为与预期的一样,只是TableView / ScrollView没有任何阴影。

即使我将Generals选项卡中的MainInterface更改为新的Storyboard,也没有TableView的DropShadow。

两个故事板中IB的设置看起来相同。

那么,任何提示我如何解决这个问题?

以下是添加和显示scrollView的代码:

self.scrollView = NSScrollView(frame: NSRect.zero)
self.scrollView!.documentView = self.tableView
self.scrollView!.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewHeightConstraint = NSLayoutConstraint(item: self.scrollView!, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100)
let topConstraint = NSLayoutConstraint(item: self.scrollView!, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: self, attribute: NSLayoutAttribute.bottom, multiplier: 1, constant: 0)
let widthConstraint = NSLayoutConstraint(item: self.scrollView!, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: self, attribute: NSLayoutAttribute.width, multiplier: 1, constant: 0)
let leadinghConstraint = NSLayoutConstraint(item: self.scrollView!, attribute: NSLayoutAttribute.leading, relatedBy: NSLayoutRelation.equal, toItem: self, attribute: NSLayoutAttribute.leading, multiplier: 1, constant: 0)
superview.addSubview(self.scrollView!)
superview.addConstraints([self.scrollViewHeightConstraint!,topConstraint,widthConstraint,leadinghConstraint])

let dropShadow = NSShadow()
dropShadow.shadowColor = NSColor.darkGray
dropShadow.shadowOffset = NSMakeSize(0, 10.0)
dropShadow.shadowBlurRadius = 3.0

self.scrollView!.wantsLayer = true
self.scrollView!.shadow = dropShadow

1 个答案:

答案 0 :(得分:1)

经过快速测试......我发现了"问题"。

对于新的ViewControllers视图,我必须设置

public void doRequestPermissions() {
    ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
            MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);

}