Cocoa touch 创建滚动工具条

Cocoa touch 创建滚动工具条,cocoa-touch,user-interface,uitoolbar,Cocoa Touch,User Interface,Uitoolbar,是否可以在Xcode中为iOS设备创建滚动UIToolbar? 我使用的是Xcode版本4.5测试版 ViewController.m⬇ ViewController.h⬇ #导入 @界面ViewController:UIViewController { iBrollView*myScrollView; ibuitoolbar*myToolBar; IBUIBarbuttonItem*工具栏项; } @属性(强,非原子)UIWindow*window; @结束 不工作:(只是我自己做的。你不能

是否可以在Xcode中为iOS设备创建滚动
UIToolbar
? 我使用的是Xcode版本4.5测试版

ViewController.m⬇ ViewController.h⬇
#导入
@界面ViewController:UIViewController
{
iBrollView*myScrollView;
ibuitoolbar*myToolBar;
IBUIBarbuttonItem*工具栏项;
}
@属性(强,非原子)UIWindow*window;
@结束

不工作:(只是我自己做的。你不能。你能做的最好的事情是放置一个工具栏并在上面添加一个UIScrollView。希望这有帮助。干杯!

是的,可以做-只是尝试一下(UI设计不是很好,但可能符合你的要求)。你必须设置scrollview的内容大小

将UIScrollView添加到情节提要中。在其中添加UIToolBar,并使其尽可能宽(可能比UIScrollView宽)。添加所需的任何工具栏项

为scrollView和工具栏(以及您的工具栏项目)创建IBOutlets。然后在
viewDidLoad
中设置
scrollView.contentSize

myScrollView.contentSize = CGSizeMake(myToolBar.frame.size.width, myToolBar.frame.size.height);
更新

请尝试以下代码以查看元素的实际维度

- (void)viewDidLoad
{
    [super viewDidLoad];

    myScrollView.contentSize = CGSizeMake(myToolBar.frame.size.width, myToolBar.frame.size.height);

    CGRect myScrollViewRect = myScrollView.frame;
    NSLog(@" myScrollView %f  %f  %f  %f", myScrollViewRect.origin.x,
          myScrollViewRect.origin.y,
          myScrollViewRect.size.width,
          myScrollViewRect.size.height);

    CGRect toolbarRect = myToolBar.frame;
    NSLog(@" toolbarRect %f  %f  %f  %f", toolbarRect.origin.x,
          toolbarRect.origin.y,
          toolbarRect.size.width,
          toolbarRect.size.height);
}
我得到了下面的输出。注意工具栏比scrollView宽多少?如果你的工具栏不宽,它就不会滚动(怎么可能-没有滚动的地方)

2012-07-10 14:29:34.494垃圾[4275:707]myScrollView 0.000000 605.000000 778.000000 128.000000 2012-07-10 14:29:34.498垃圾[4275:707]toolbarRect 0.000000 52.000000 1200.000000 44000000


希望这能帮助一些人。我在这里找到了答案:

基本上,您需要从超级视图中删除工具栏,重新设置工具栏的一些属性,将其设置为scrollview的子视图,然后将scrollview设置为最初删除的超级视图的子视图。所有内容都在该链接中。对我来说非常有效。

swift 4版本

func addToolBar(textField: UITextView){
let toolBar = UIToolbar()
toolBar.barStyle = UIBarStyle.default
toolBar.isTranslucent = true
toolBar.tintColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1)
let bold = UIBarButtonItem(image: #imageLiteral(resourceName: "download 12.01.19.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(boldFunc))
let italic = UIBarButtonItem(image: #imageLiteral(resourceName: "italic-png-image-54776.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(italicFunc))
let underlined = UIBarButtonItem(image: #imageLiteral(resourceName: "underlined_font-512.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(underlineFunc))
let strikeThrough = UIBarButtonItem(image: #imageLiteral(resourceName: "Strikethrough_font_awesome.svg.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(strikeFunc))
let size = UIBarButtonItem(title: "\(fontSize)", style: UIBarButtonItemStyle.done, target: self, action: #selector(changeSize))
let textColor = UIBarButtonItem(image: #imageLiteral(resourceName: "text_color1600.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(changetextColor))
let backgroundColor = UIBarButtonItem(image: #imageLiteral(resourceName: "background color.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(changebackgroundColor))
let textLeft = UIBarButtonItem(image: #imageLiteral(resourceName: "left-27877_960_720.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(alignLeft))
let textRight = UIBarButtonItem(image: #imageLiteral(resourceName: "align_right_filled1600.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(alignRight))
let textCenter = UIBarButtonItem(image: #imageLiteral(resourceName: "center.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(alignCenter))
let pic = UIBarButtonItem(image: #imageLiteral(resourceName: "add.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(appendPic))
let bulletpoint = UIBarButtonItem(image: #imageLiteral(resourceName: "bulletpoint.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(makeBulletpoints))
toolBar.setItems([bold, italic, underlined, strikeThrough, size, textColor, backgroundColor, textLeft, textRight, textCenter, pic, bulletpoint], animated: false)
toolBar.isUserInteractionEnabled = true
toolBar.sizeToFit()
toolBar.frame = CGRect(x: 0, y: 0, width: 33 * 12, height: toolBar.frame.size.height)
textField.delegate = self
//////////try to add a scroll view
let scrollView = UIScrollView()
scrollView.frame = toolBar.frame;
scrollView.bounds = toolBar.bounds;
scrollView.autoresizingMask = toolBar.autoresizingMask;
scrollView.showsVerticalScrollIndicator = false;
scrollView.showsHorizontalScrollIndicator = false;
scrollView.contentSize = toolBar.frame.size;
scrollView.addSubview(toolBar)
textField.inputAccessoryView = scrollView
}
当你计算宽度时

toolBar.frame = CGRect(x: 0, y: 0, width: 33 * 12, height: toolBar.frame.size.height)

宽度将取决于您使用的按钮的大小。我有12个按钮,按钮上的所有图像都是25 x 25,还有一个带有文本的按钮。首先我写了25 x 12,但它们不适合,我想会自动添加一些边距,我没有详细说明按钮的大小是如何计算的,所以我只是尝试一下直到我找到适合我的数字后,我才开始使用它。

编辑你的问题,并用你构建它所采取的步骤(加上代码)。除非我对你要做的事情有不同的想法,否则在UIScrollView中嵌入工具栏可以很好地工作,如果工具栏比scrollView宽,它将滚动。2012-07-10 14:36:12.127 scrollView[5323:c07]myScrollView 0.0000000.0000000.0000000.0000002012-07-10 14:36:12.129 scrollView[5323:c07]toolbarRect 0.0000000.0000000.0000000.000000I刚刚更改了头文件中的一些代码,输出为:2012-07-10 14:38:40.487 scrollView[5371:c07]myScrollView 5.000000 111.000000 320.000000 252.000000 2012-07-10 14:38:40.489 scrollView[5371:c07]toolbarRect-15.000000 208.000000 394.000000 44.000000我现在得到一个滚动条,但它仍然不会移动。
func addToolBar(textField: UITextView){
let toolBar = UIToolbar()
toolBar.barStyle = UIBarStyle.default
toolBar.isTranslucent = true
toolBar.tintColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1)
let bold = UIBarButtonItem(image: #imageLiteral(resourceName: "download 12.01.19.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(boldFunc))
let italic = UIBarButtonItem(image: #imageLiteral(resourceName: "italic-png-image-54776.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(italicFunc))
let underlined = UIBarButtonItem(image: #imageLiteral(resourceName: "underlined_font-512.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(underlineFunc))
let strikeThrough = UIBarButtonItem(image: #imageLiteral(resourceName: "Strikethrough_font_awesome.svg.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(strikeFunc))
let size = UIBarButtonItem(title: "\(fontSize)", style: UIBarButtonItemStyle.done, target: self, action: #selector(changeSize))
let textColor = UIBarButtonItem(image: #imageLiteral(resourceName: "text_color1600.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(changetextColor))
let backgroundColor = UIBarButtonItem(image: #imageLiteral(resourceName: "background color.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(changebackgroundColor))
let textLeft = UIBarButtonItem(image: #imageLiteral(resourceName: "left-27877_960_720.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(alignLeft))
let textRight = UIBarButtonItem(image: #imageLiteral(resourceName: "align_right_filled1600.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(alignRight))
let textCenter = UIBarButtonItem(image: #imageLiteral(resourceName: "center.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(alignCenter))
let pic = UIBarButtonItem(image: #imageLiteral(resourceName: "add.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(appendPic))
let bulletpoint = UIBarButtonItem(image: #imageLiteral(resourceName: "bulletpoint.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(makeBulletpoints))
toolBar.setItems([bold, italic, underlined, strikeThrough, size, textColor, backgroundColor, textLeft, textRight, textCenter, pic, bulletpoint], animated: false)
toolBar.isUserInteractionEnabled = true
toolBar.sizeToFit()
toolBar.frame = CGRect(x: 0, y: 0, width: 33 * 12, height: toolBar.frame.size.height)
textField.delegate = self
//////////try to add a scroll view
let scrollView = UIScrollView()
scrollView.frame = toolBar.frame;
scrollView.bounds = toolBar.bounds;
scrollView.autoresizingMask = toolBar.autoresizingMask;
scrollView.showsVerticalScrollIndicator = false;
scrollView.showsHorizontalScrollIndicator = false;
scrollView.contentSize = toolBar.frame.size;
scrollView.addSubview(toolBar)
textField.inputAccessoryView = scrollView
}
toolBar.frame = CGRect(x: 0, y: 0, width: 33 * 12, height: toolBar.frame.size.height)