2014-12-02 10:50:41 u014558625 阅读数 2483
[iOS_Dev]调整间距---导航栏右边的按钮


//显示导航栏右边的按钮
- (void)showCustomNavigationRightButtonWithTitle:(NSString *)aTitle image:(UIImage *)aImage hightlightImage:(UIImage *)hImage
{//重写父类方法
    
    //右边按钮
    UIButton *rightBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 51, 41)];
    CGSize imageSize = CGSizeMake(aImage.size.width, aImage.size.height);
    UIEdgeInsets imageEdgeInsets = UIEdgeInsetsMake(rightBtn.frame.size.height/2-imageSize.height/2, rightBtn.frame.size.width/2-imageSize.width/2,
                                                    rightBtn.frame.size.height/2-imageSize.height/2, rightBtn.frame.size.width/2-imageSize.width/2);
    rightBtn.imageEdgeInsets = imageEdgeInsets;
    /**
     *  设置frame只能控制按钮的大小
     */
    
    if(aTitle)
    {
        [rightBtn setTitle:aTitle forState:UIControlStateNormal];
        [rightBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        rightBtn.titleLabel.font = [UIFont systemFontOfSize:15];
    }
    
    [rightBtn setImage:aImage forState:UIControlStateNormal];
    if(hImage)
    {
        [rightBtn setImage:hImage forState:UIControlStateHighlighted];
    }
    
    
    //导航栏右边按钮
    UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithCustomView:rightBtn];
    
    //调整间距
    UIBarButtonItem *navigationSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    /**
     *  width为负数时,相当于rightButton往 右移动width数值个像素,由于按钮本身和边界间距为5pix,所以width设为-5时,间距正好调整为0;
     *  width为正数时,相当于rightButton往 左移动width数值个像素
     */
    navigationSpacer.width = -17; //间距减小17pix
    
    
    [rightBtn addTarget:self action:@selector(onNavigationRightButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
    self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:navigationSpacer,rightButton, nil];
    rightBtn.backgroundColor = [UIColor yellowColor];
    [navigationSpacer release];
    [rightBtn release];
    [rightButton release];
}

2013-02-01 17:27:43 mm1983abc 阅读数 29
需求是:点击返回按钮,自动保存设定,然后返回前一个画面,返回按钮必须使用带左箭头的那种,用过iOS的都懂的。

我一开始用的是iOS默认的backBarButtonItem, 但是发现它不能接收事件(Action),即便我设置了target以及Action也完全不起作用。 用leftBarButtonItem吧,倒是可以接收事件了,但是样式无法成为返回按钮那种箭头样子。

苦恼, 最后多次尝试,网上也翻了N遍终于找到了一种方法:
不需要额外制作图片,代码如下:


UIButton *backButton = [UIButton buttonWithType:101];
[backButton addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
[backButton setTitle:cancelText forState:UIControlStateNormal];

UIBarButtonItem *backItem = [[[UIBarButtonItem alloc] initWithCustomView:backButton] autorelease];
self.navigationItem.leftBarButtonItem = backItem;


保存或者其他Action在back方法中实现杰克
2015-08-06 00:30:51 skxwh736 阅读数 454

前面的工作已完成小游戏的主要功能,后面开始完善功能。

考虑在滑动条上添加提示语,当重合时“完美命中”,接近时“太帮了,差点就到了”,很远时“差得没边了”。

有一个问题是触摸按钮弹出消息提示框,同时目标数字改变了,不能观察到当前回合的目标数字。函数体内不是顺序执行,最后才更新目标值的么,为什么会出现前述的问题呢?

这是因为iOS的提示框在显示的时候并没有暂停程序的执行,提示对话框是异步的。如何解决呢?

使用事件!!!UIAlertAction的第三个handler表示但触摸按钮执行事件{action in ... ... },使用nil表示没有事件要执行。

let action = UIAlertAction(title: "爱卿辛苦了", style: .Default, handler: {action in self.startNewRound();self.updateLabels()})

采用闭包的形式时内部一定要用self(虽然通常是不用的加self)。

接着是添加重新来过的按钮,与之前类似不再赘述。要学习的是为了一切合乎逻辑,程序更加清晰易读,添加更多的代码是值得的。

2016-09-22 17:55:24 IT_ZGC 阅读数 20736
首先这里说的是UIButton的Image,不是backgroundImage。之所以说到这个问题,是因为我有一个button是 75*25的,切的一张图片是25*25的,我想让图片不被拉伸显示,或者不重复显示,且能显示在button的中间。
尝试了几种无效的方法包括:
1、直接操作button的ImageView
2、把image设置成stretch Image
3、对Image drawInRect
可能是我调用或实现的有问题,反正结果都不理想。后来发现应该使用button 里面的imageEdgeInsets概念,它表示了image距离button边框的距离,代码如下

self.button.imageEdgeInsets = UIEdgeInsetsMake(0, 25, 0, 25);

参数分别是top, left, bottom, right,我这里写死了距离,实际操作中应该动态计算。


除此之外还有一个头疼的ImageView,是UITableViewCell里面的,也是readonly属性,且设置半天不生效,暂时没有找到好办法,规避的方法是不使用imageview,而是自定义cell,自己add一个新的imageview,可以随意调整大小和位置。
2013-09-01 16:16:59 mainjun 阅读数 810


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

return (interfaceOrientation == UIInterfaceOrientationPortrait);

}

 

#pragma mark – table view data source methods

 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

if (indexPath.row == selectedRow && selected) {

return 130;

}else {

return 50;

}

}

 


bool selected=NO;

 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

selected = !selected;

selectedRow = indexPath.row;

[agendaTableView reloadData];

}

 

- (IBAction)return:(id)sender {

[self dismissModalViewControllerAnimated:YES];

}

@end

没有更多推荐了,返回首页