小编Zap*_*pel的帖子

UICollectionViewCell与UIScrollView取消didSelectItemAtIndexPath

我有一个UICollectionView水平滚动,一次显示一个UICollectionViewCell.每个UICollectionViewCell都有一个垂直滚动UIScrollView作为子视图,用于滚动单元格的内容.只有90%左右的内部UICollectionViewCell被覆盖UIScrollView- 即单元的外框未被覆盖.

事实证明,由该部分UICollectionViewCell覆盖的部分UIScrollView取消了UICollectionView委托didSelectItemAtIndexPath.因此,当在UIScrollView该方法内发生简单抽头时调用,而如果抽头发生在单元的外部,即在该外部UIScrollView,调用该方法.

有关如何实现设置的建议,didSelectItemAtIndexPath即使在点击发生时也可以调用该方法UIScrollView

uiscrollview uicollectionview uicollectionviewcell

17
推荐指数
3
解决办法
7858
查看次数

如何在XAML中将静态值传递给IValueConverter

我想在我的WP7应用程序中使用从Web服务获取的静态文本.每个文本都有一个名称(indetifier)和一个Content属性.

例如,文本可能如下所示:

Name = "M43";
Content = "This is the text to be shown";
Run Code Online (Sandbox Code Playgroud)

然后我想将文本的名称(即标识符)传递给a IValueConverter,然后查找Name并返回文本.

我认为转换器看起来像这样:

public class StaticTextConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value != null)
        {
            return App.StaticTexts.Items.SingleOrDefault(t => t.Name.Equals(value)).Content;
        }

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

然后在XAML中:

<phone:PhoneApplicationPage.Resources>
    <Helpers:StaticTextConverter x:Name="StaticTextConverter" />
</phone:PhoneApplicationPage.Resources>

...

<TextBlock Text="{Binding 'M43', Converter={StaticResource StaticTextConverter}}"/>
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不起作用,我不确定我是否正确地将值传递给转换器.

有人有什么建议吗?

c# xaml ivalueconverter windows-phone-7

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

Xcode 14 删除了欧洲键盘上注释选择的快捷方式

在此输入图像描述

\n

通常快捷方式是“\xe2\x8c\x98\xe2\x87\xa7/”。

\n

但由于“/”位于丹麦语键盘上的“7”键上,因此该快捷方式现在打开“帮助”菜单 - 具有讽刺意味的是。

\n

手动将其添加为键绑定没有帮助。

\n

在此输入图像描述

\n

据我记得,去年 Xcode 13 也发生过同样的事情。

\n

xcode xcode14

10
推荐指数
2
解决办法
2962
查看次数

了解iOS上的仪器内存分配日志

我已经构建了一个几乎已经完成的iOS应用程序,但是,我最近经历过它由于"内存压力"而崩溃.所以我开始在Instruments中分析内存分配,当然,应用程序确实使用了相当多的内存,而且在使用过程中似乎只会增加.

但是,对于仪器内存分配来说相对较新,我无法破译52%的分配,如下面的屏幕截图所示:

在此输入图像描述

它显然与Core Animation有关,但究竟对我来说难以确定,所以我认为一些聪明的头脑可能知道答案.

面包屑:

我的应用程序使用自定义segue,在视图控制器之间移动时,正在进行大量动画.这是一个例子:

@interface AreaToKeyFiguresSegue : UIStoryboardSegue

@end

...

@implementation AreaToKeyFiguresSegue

- (void)perform
{
    [self sourceControllerOut];
}

- (void)sourceControllerOut
{
    AreaChooserViewController *sourceViewController = (AreaChooserViewController *) [self sourceViewController];
    KeyFigureViewController *destinationController = (KeyFigureViewController *) [self destinationViewController];

    double ratio = 22.0/sourceViewController.titleLabel.font.pointSize;

    sourceViewController.titleLabel.adjustsFontSizeToFitWidth = YES;

    [UIView animateWithDuration:TRANSITION_DURATION delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{

        // Animate areaChooser
        sourceViewController.areaChooserScrollView.alpha = 0;
        sourceViewController.areaScrollViewVerticalSpaceConstraint.constant = -300;

        sourceViewController.backButtonVerticalConstraint.constant = 20;
        sourceViewController.backButton.transform = CGAffineTransformScale(sourceViewController.backButton.transform, ratio, ratio);
        sourceViewController.backButton.titleLabel.textColor = [UIColor redKombitColor];

        sourceViewController.backArrowPlaceholderVerticalConstraint.constant = 14;
        sourceViewController.backArrowPlaceholder.alpha = 1;

        sourceViewController.areaLabelVerticalConstraint.constant = 50;
        sourceViewController.areaLabel.alpha …
Run Code Online (Sandbox Code Playgroud)

memory-management instruments ios

9
推荐指数
2
解决办法
6166
查看次数

如何在旋转时动态地将UIButton重新定位为UIImageView的子视图

我正在开发一款iPad应用程序,可让您在智能房屋的原型中控制不同的东西.例如,它可以让你打开和关闭灯.为此,我做了一个UIImageView显示房子的平面图,并添加UIButtons为每个可以切换的灯的子视图.

在此输入图像描述

如您所见,按钮完全放置在平面图上,使用setFrame每个按钮的方法UIButton.但是,当我将iPad旋转到纵向时,会发生以下情况:

在此输入图像描述

按钮显然仍然具有相同的原点,但它与图像的重新定位无关.

平面图图像具有以下设置的支柱和弹簧:

在此输入图像描述

并将其内容模式设置为Aspect Fit.

我的问题是

如何动态重新定位每个UIButton,使其具有相同的相对位置.我想我必须在{did/should}AutorotateToInterfaceOrientation委托方法中处理这个问题.

应该注意的UIImageView是可缩放并处理这个我已经实现了scrollViewDidZoom委托方法如下:

for (UIView *button in _floorPlanImage.subviews) {       
    CGRect oldFrame = button.frame;
    [button.layer setAnchorPoint:CGPointMake(0.5, 1)];
    button.frame = oldFrame;
    button.transform = CGAffineTransformMakeScale(1.0/scrollView.zoomScale, 1.0/scrollView.zoomScale);
}
Run Code Online (Sandbox Code Playgroud)

先感谢您!

xcode objective-c ipad ios5

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

在Xcode 10中使用启动图像时,iPhone XS Max/XR无法使用原始分辨率

由于无关原因,我正在使用旧学校启动图像方法而不是Launch屏幕故事板.

通常,当Apple推出新的物理外形时,他们已经添加了在图像资产目录中包含新屏幕尺寸图像的功能,这反过来又可以使您的应用以原始分辨率运行,而不是从以前支持的扩展决议.

然而,这一次似乎并非如此.这是LaunchImage资产在Xcode 10 的最终版本(即不是 GM)中的样子:

在此输入图像描述

正如您所看到的,iPhone XS Max或iPhone XR没有任何插件,它们的分辨率(iPhone)和iPhone XS的分辨率都不同(更高).

我见过其他人有同样的问题,但没有任何解决方案.

我似乎无法找到任何iOS 12或Xcode 10文档,表明Apple仅支持用于启动屏幕的故事板或xibs.

xcode ios iphone-x ios12 xcode10

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

Objective-C if-statement以错误的方式输入

我是一位经验丰富的程序员,所以这种神秘的行为对我来说完全是个谜.

我有一个简单的if认为语句来应该在整整两个布尔变量只能输入false.但是,if-statement由于某种原因进入时只有其中一个false.

我的代码看起来像这样:

BOOL connected = [self connected];

NSLog(@"Connected to the internet: %@", connected ? @"YES" : @"NO");

BOOL notConnectedMessageShown = ((FOLDAppDelegate *)[[UIApplication sharedApplication] delegate]).notConnectedMessageShown;

NSLog(@"notConnectedMessageShown: %@", notConnectedMessageShown ? @"YES" : @"NO");

if (!connected && !notConnectedMessageShown);
{
    NSLog(@"Entering if statement");
}
Run Code Online (Sandbox Code Playgroud)

NSLog打印以下内容:

"Connected to the internet: YES"
"notConnectedMessageShown: NO"
"Entering if statement"
Run Code Online (Sandbox Code Playgroud)

我真的不明白.由于第一个变量true位于第一位,因此if根据我的编程技巧应该跳过整个语句?

有没有人知道这里发生了什么?

xcode objective-c

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

创建具有静态和属性前缀的UITextField

我想做一个UITextField,它有一个静态前缀,用户不能编辑或删除,同时也用浅灰色字体颜色.

文本字段的可编辑部分应始终以黑色显示.

下面给出一个例子:

在此输入图像描述

它主要用于输入用户名,带有不断添加前缀的域.


我已经尝试过使用textFieldShouldCleartextField:shouldChangeCharactersInRange:replacementString:委托方法NSMutableAttributedString,但是根本无法解决它:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSMutableAttributedString *text = [textField.attributedText mutableCopy];

    [text addAttribute:NSForegroundColorAttributeName value:[UIColor grayColor] range:NSMakeRange(0, 7)];

    if (textField.text.length > 7)
    {    
        [text addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(7, textField.attributedText.length - 7)];
    }
    [text addAttribute:NSFontAttributeName value:[UIFont gothamFontForSize:textField.font.pointSize andWeight:kGothamLight] range:NSMakeRange(0, textField.attributedText.length)];


    return range.location > 6;
}

- (BOOL)textFieldShouldClear:(UITextField *)textField
{
    NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:@"kombit\\"];
    [text addAttribute:NSForegroundColorAttributeName value:[UIColor grayColor] range:NSMakeRange(0, 7)];
    [text addAttribute:NSFontAttributeName value:[UIFont gothamFontForSize:textField.font.pointSize andWeight:kGothamLight] …
Run Code Online (Sandbox Code Playgroud)

uitextfield ios nsmutableattributedstring

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