小编idS*_*tar的帖子

<ul>中<li>元素的自定义项目符号,它是常规字符,而不是图像

我意识到可以使用CSS属性指定自定义图形作为替换项目符号字符:

list-style-image
Run Code Online (Sandbox Code Playgroud)

然后给它一个URL.

但是,就我而言,我只想使用'+'符号.我不想为此创建图形然后指向它.我宁愿只是指示无序列表使用加号作为项目符号.

可以这样做还是我被迫先把它变成图形?

html css webkit mobile-webkit

114
推荐指数
12
解决办法
24万
查看次数

通过缩放内容来抑制WKWebView,以与UIWebView相同的放大率进行渲染

问题

使用WKWebView代替UIWebView,我注意到,WKWebView与我相比,它的内容大幅缩小UIWebView.我希望WKWebView停止这样做,并按照字面意思尊重我的CSS值UIWebView.

上下文

我在我的原生iOS应用程序中使用Web视图,用于在iPad上显示信息内容的弹出窗口内容.很高兴能够将内容和设计人员提供给他们并说"只需放入一些HTML内容,引用链接的CSS文件".

所有这些在使用时都很有用UIWebView.

但是popovers通常非常紧凑.

我经历了什么

在我狭隘的popovers中,内容按比例缩小,就好像我的内容整个网页被小型化以适应.我可以看到WKWebView主要用于在iOS上构建备用浏览器或构建混合应用程序的人,其中WKWebView本质上是接管屏幕.

WKWebView中的放大系数不是可以设置的.当然,用户可以放大,但这会失败.我不是在寻找放大的视口; 我正在寻找与UIWebView一样适合和自动换行的整个内容.

使用WKWebView,在模拟器中,如果我将正文文本大小提升到50px而不是14px,我会看到我想要的大小.但是,这个代码在设备上时甚至没有帮助,因此也不能选择夸大我的CSS大小!

UIWebView有什么不对?

好吧,没什么.它还没有(在)iOS8中被弃用,也许b/c它仍然有用,正如我所经历的那样.但我注意到WKWebView很快.我已经看到一些猜测,写作是UIWebView的墙上.我想:"为什么现在不采用iOS8中更现代的API?"

所以,我现在继续使用UIWebView,但是我想切换到WKWebView,如果我能让它尊重我的CSS大小.

这是UIWebView很好地呈现的原始CSS,但是popover中的哪个WKWebView会以非常小的字体呈现:

body {
    font-family: "HelveticaNeue";
    font-size: 15px;
    line-height: 17px;
    color: #000000;
}

h1 {
    font-family: "HelveticaNeue-Bold";
    font-size: 18px;
    line-height: 20px;
    color: #000000;
}


h2 {
    font-family: "HelveticaNeue-Bold";
    font-size: 16px;
    line-height: 18px;
    color: #000000;
}
Run Code Online (Sandbox Code Playgroud)

css uiwebview ios8 wkwebview

65
推荐指数
1
解决办法
2万
查看次数

重新排序UITabBarController中的视图控制器,所有这些都在Storyboard中定义

我想在我的故事板中更改附加到UITabBarController的视图控制器的顺序,而不断开所有视图控制器并按所需顺序重新连接它们.

我的问题:这可以通过Storyboard IB UI完成吗?

讨论

我在寻找一些检查小组在那里我可以在饲料中视图控制器的这个列表上下移动项目viewControllers上的财产UITabBarController.

多个视图控制器链接到标签栏控制器

我有很多标签,所以我希望不必断开所有连接并重新连接,只是为了改变顺序.

我甚至尝试在检查器中更改Bar Item上的'tag'值,但是在运行时也忽略了该值(我认为它是用于识别目的,而不是用于排序).

标签设置在栏项目上

objective-c uitabbarcontroller ios5 uistoryboard

37
推荐指数
3
解决办法
1万
查看次数

在导航栏中放置基于UIBarButtonItem的自定义视图,而不使用默认的水平填充

如何删除自定义左右UINavigationBar项目左侧和右侧的水平填充?iOS默认设置似乎有~10个填充点.

我正在自定义左右导航栏按钮(我已经放弃尝试设置自己的backButtonItem,所以我只是使用leftBarButtonItem).

在任何一种情况下(左或右),按下这些自定义按钮表示Apple似乎在leftBarButtonItem的左侧和rightBarButtonItem的右侧保留了一些填充; 无论我使用UIButton的自定义背景和图像属性的宽度,我将其放置在左/右栏按钮项目内作为其自定义视图.

由于UIBarButtonItems没有我可以访问的"框架",我无法将它们放在超级视图中,就像我可以正常的UIViews一样.

有关如何删除此默认填充的任何建议?请参阅附加的屏幕截图,看看我正在尝试将其缩小到零宽度.在屏幕截图中,加号图标显示为向右移动,因为我给了它一个插图; 但突出显示的背景图像,也可能是使用插图,正在右侧修剪.

请参见图片:https://skitch.com/starbaseweb/rj2e5/ios-simulator

作为参考,这是我如何创建我的自定义UIBarButtonItem(在这种情况下,它是正确的按钮):

- (UIBarButtonItem *)customAddButtonItemWithTarget:(id)target action:(SEL)action {
  UIButton *customButtonView = [UIButton buttonWithType:UIButtonTypeCustom];

    customButtonView.frame = CGRectMake(0.0f, 0.0f, 45.0f, 44.0f);

    [customButtonView setBackgroundImage:
        [UIImage imageNamed:@"bgNavBarButton-OutsideRight-Normal.png"] 
        forState:UIControlStateNormal];
    [customButtonView setBackgroundImage:
        [UIImage imageNamed:@"bgNavBarButton-OutsideRight-Highlighted.png"] 
        forState:UIControlStateHighlighted];

    [customButtonView setImage:
        [UIImage imageNamed:@"bgNavBarButton-Add-Normal.png"] 
        forState:UIControlStateNormal];
    [customButtonView setImage:
        [UIImage imageNamed:@"bgNavBarButton-Add-Highlighted.png"] 
        forState:UIControlStateHighlighted];

    [customButtonView addTarget:target action:action 
        forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem *customButtonItem = [[[UIBarButtonItem alloc] 
        initWithCustomView:customButtonView] autorelease];
    [customButtonView setImageEdgeInsets:UIEdgeInsetsMake(0.0f, 10.0f, 0.0f, 0.0f)];

    //customButtonItem.imageInsets = UIEdgeInsetsMake(0.0f, 10.0f, 0.0f, 0.0f);

    return customButtonItem;    
}
Run Code Online (Sandbox Code Playgroud)

iphone uinavigationbar uibarbuttonitem uinavigationitem ios

31
推荐指数
1
解决办法
2万
查看次数

ARC,通过捕获的自我在块和参考周期中的ivars

我在纯iOS5/ARC环境中工作,所以我可以根据需要使用__weak引用.我在很多情况下都会在块中引用ivars,最值得注意的是,移动视图的动画块,也就是我的视图控制器类的属性.

我的问题:

在块中最平凡地使用ivars,我是否创建了一个参考周期?每次我编写一个操作包含对象的实例变量的块时,是否需要使用__weak self/strong self技术?

我一直在重新观看2011年WWDC会议#322(Objective-C Advancements in Depth),以了解从时间索引25:03开始的关于"参考周期通过捕获的自我"的3分钟段的细微差别.对我来说,这意味着任何块中ivars的使用都应该通过该段中描述的弱自我/强自我设置来保护.

下面的视图控制器上的示例方法是我做的动画的典型.

在openIris块中,引用ivars"_topView"和"_bottomView"是不对的?

我应该总是在块之前设置一个__weak引用自身,然后在块内强引用刚刚设置的弱引用,然后通过我块中的强引用访问ivars吗?

从WWDC会话中,我理解在块中引用ivars实际上是在创建对这些ivars挂起的隐含自我的引用.

对我而言,这意味着没有任何简单或微不足道的情况,在没有弱/强舞的情况下访问块中的ivars是正确的,以确保没有循环.或者我是否正在阅读一个不适用于简单案例的角落案例,例如我的例子?

- (void)openIrisAnimated:(BOOL)animated
{
    if (_isIrisOpened) {
        NSLog(@"Asked to open an already open iris.");
        return; // Bail
    }

    // Put the common work into a block.
    // Note: “_topView” and “_bottomView” are the backing ivars of 
    // properties “topView” and “bottomView”
    void (^openIris)() = ^{
        _topView.frame     = CGRectMake(....);        
        _bottomView.frame  = CGRectMake(....);
    };

    // Now do the actual opening of the iris, whether animated or not: …
Run Code Online (Sandbox Code Playgroud)

objective-c ios objective-c-blocks ios5 automatic-ref-counting

26
推荐指数
1
解决办法
6687
查看次数

在不使用UILabel的情况下,在drawRect:方法中为NSString文本添加投影

我想为使用iOS提供的NSString (UIStringDrawing)类别方法绘制的文本添加阴影:

- (CGSize)drawAtPoint:(CGPoint)point forWidth:(CGFloat)width 
             withFont:(UIFont *)font minFontSize:(CGFloat)minFontSize 
       actualFontSize:(CGFloat *)actualFontSize 
        lineBreakMode:(UILineBreakMode)lineBreakMode
   baselineAdjustment:(UIBaselineAdjustment)baselineAdjustment; 
Run Code Online (Sandbox Code Playgroud)

显然,没有投影选项.

是的,可以在这里使用UILabel并获得设置的阴影属性,但这不会像性能一样,因为任何UIView子类(例如UILabel)都会包装CALayer对象并且会更重(性能明智).

这是上下文:

我正在为UITableViewCell子类做自定义绘图,drawRect:在表格单元视图上实现,而不是从合成的UIView子类的Nib文件创建表格单元格.

合成一堆UIView子类会破坏尝试保持这种精简并在表视图滚动性能中保持在每秒50-60帧内的目的.

我尝试过轻微的偏移两次绘制字符串.一旦我调整了我要去的单元格的背景颜色上的投影颜色,这可能会变得可以接受,但它似乎相当笨拙.当然没有像UILabel那样的阴影模糊属性.

我搜索了解决方案,他们或者推荐UILabel使用(我上面已经解雇了,因为我有十几个不同的文本元素被合成到表格单元格视图)或者CGContextSetShadow().后者似乎总是在矩形形状的上下文中提出,并且不一定用于将阴影附加到直接使用上述NSString drawAtPoint...方法绘制的文本的路径.(我确实尝试过,但它似乎没有用(即没有改变);我是Core Graphics绘图的新手).

建议?

nsstring uiview drawrect dropshadow ios

22
推荐指数
1
解决办法
1万
查看次数

使用Cocoa Lumberjack日志框架立即刷新日志语句,即NSLog刷新到控制台的方式

许多iOS开发人员已经找到了Cocoa Lumberjack Logging框架来满足简单NSLog语句不需要的需求.它让人想起Java世界中的Log4J.

无论如何,我已经为Lumberjack编写了自己的自定义格式化程序,但我没有看到任何关于如何立即刷新日志语句的文档.

例如,如果我正在浏览调试器并且我点击了一个NSLog()语句,它会立即将日志语句刷新到控制台.这是我想从DDLogVerbose()Lumberjack 的电话中得到的行为.

现在,我回过头来将这些语句更改为NSLog()语句,如果我希望它们在我调试一段代码时立即吐出来.随着伐木工人如此强大,我开始认为有一种方法可以将其配置为毫不拖延地进行冲洗.

有谁知道如何做到这一点?

logging flush nslog ios lumberjack

14
推荐指数
1
解决办法
6342
查看次数

包含在选项数组中的验证或为零

我有一个模型,我想将字段的输入限制为nil或落在指定的值数组中.我可以让包含部分工作,但这allow_nil: true似乎不适合我:

class Mock::Patient < ActiveRecord::Base
  LANGUAGE_OPTIONS = %w[English Spanish French German Chinese Hindi Punjabi]
  validates :preferred_language, inclusion: { in: LANGUAGE_OPTIONS }
end
Run Code Online (Sandbox Code Playgroud)

我已经尝试将最后一行修改为:

  validates :preferred_language, inclusion: { in: LANGUAGE_OPTIONS }, allow_nil: true
Run Code Online (Sandbox Code Playgroud)

但无济于事.表达简单包含或nil组合的最简单方法是什么?

validation activerecord ruby-on-rails-3.2

11
推荐指数
1
解决办法
1982
查看次数

核心数据故障和多对多关系的获取

我有几个关于Core Data行为的"理论"问题,这些问题与to-many关系中发生的事情有关,何时依赖于从父实体中走出关系以及何时应该构建一个新的获取请求.他们都非常相关.

背景

假设父实体RPBook与其具有多对多关系RPChapter.一本书有很多章节.逆也在核心数据模型中设置.涉及手动排序关系的基本形式,因此RPChapter实体具有chapterIndex属性.我没有在这里使用iOS5的新订购关系(与这些问题无关).

要进入书中的章节,可以使用chapters关系访问者:

RPBook *myBook; // Assume this is already set to an existing RPBook
NSSet *myChapters = myBook.chapters
Run Code Online (Sandbox Code Playgroud)

用法/设置

在iPhone应用程序中,我们从一个显示RPBook实例列表的表视图开始.相应的章节不会被预取作为支持表视图的获取结果控制器的获取规范的一部分,因为这些章节尚不需要.

我现在选择其中一个RPBook实例,我被带到一个新页面,我RPBook在我的视图控制器中有这个实例引用,它没有chapters预取.

问题1:调用filteredSetUsingPredicate:chapters关系的时候了

如果我想通过直接chapters使用关系进行过滤filteredSetUsingPredicate:,那么即使工作也可靠,因为我没有预先获取RPChapter当前RPBook正在查看的当前所有相关实例?换句话说,filteredSetUsingPredicate:在该关系中的所有对象的幕后触发故障,以便做它的事情,或者它会误导性地仅根据已经碰巧在内存中的哪些章节(如果有的话)给出结果?

如果我没有相当多的相关章节,我应该allObjects先通过调用来设置这个样式吗?即

[[self.chapters allObjects] filteredArrayUsingPredicate:predicate]
Run Code Online (Sandbox Code Playgroud)

而不只是:

[self.chapters filteredSetUsingPredicate:predicate]
Run Code Online (Sandbox Code Playgroud)

问题2:批量检索所有书籍的章节

在我有一个RPBook实例但没有RPChapter与之相关的预取实例的情况下,如何使用关系强制一次性获取所有书籍的章节chapters?是否[myBook.chapters allObjects]做到这一点还是我仍然可以得到故障从回调? …

core-data prefetch relationship fault ios5

7
推荐指数
1
解决办法
2951
查看次数

移除 UIButton 层上的 CAShapeLayer 遮罩,以便取消遮罩动画 UIButton 大小更改

我有一个自定义按钮类型的 UIButton,我只是在按钮的底层 CALayer 上设置了背景和边框颜色。然后我施加掩模,一个CAShapeLayer(得到两个圆角)上述组成的这个下层此篇

到现在为止还挺好。我为 UIButton 设置动画以增大大小。到现在为止还挺好。见下文(图像中的所有内容都是 _fusedBar,保存您在其下方看到的 x 轴线片段和美元金额文本)。

完全成长的 UIButton 在代码中称为 _fusedBar

当我使用相同的动画例程但不同的参数值(同时帧高度变化的仿射平移)为 UIButton 设置动画以使其收缩时,在收缩发生时没有任何 UIButton(除了一条细长条)是可见的。

我试图让作为掩码的 CAShapeLayer 从它的超级层中删除自己,我试图将 UIButton 层上的掩码属性设置为 nil 等,但这些都没有删除掩码,以便我可以看到UIButton 动画(随着仿射平移和框架高度变化而缩小)。

这是相关的动画代码:

// Stackoverflow readers: Assume 'duration', 'scaledHeight' and 'delay' 
// already defined.

void (^fusedBarChange)(void) = ^{    
    _fusedBar.transform = CGAffineTransformMakeTranslation(0, -scaledHeight);
    [_fusedBar nd_setNewSizeHeight:scaledHeight];
};

[UIView animateWithDuration:duration
                      delay:delay
                    options:UIViewAnimationCurveEaseOut 
                 animations:^(void) {
                     fusedBarChange();
                 }
                 completion:^(BOOL finished) {
                     // Other stuff not relevant to _fusedBar animation
                 }];
Run Code Online (Sandbox Code Playgroud)

在调用此动画之前,我根据上面引用的帖子设置了遮罩。该代码如下。请注意,'_fusedBar' 是本次讨论的核心 UIButton。

- (void)configureRoundedTop {
    // YES: Start by creating the path …
Run Code Online (Sandbox Code Playgroud)

iphone core-animation mask objective-c ios

5
推荐指数
1
解决办法
3697
查看次数